翼度科技»论坛 编程开发 python 查看内容

Python丨tkinter开发常用的29种功能用法(建议码住)

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
在Python软件开发中,tkinter中command功能的作用是为按钮、菜单等组件绑定回调函数,用户操作该组件时会触发相应的函数执行。
本文涵盖了各种组件和功能:
1、为Button组件(按钮)绑定回调函数
  1. import tkinter as tk
  2. def say_hello():
  3.     print("Hello World!")root = tk.Tk()
  4. button = tk.Button(root, text="点我", command=say_hello)
  5. button.pack()
  6. root.mainloop()
复制代码

 

2、为Checkbutton组件(多选择钮)绑定回调函数
  1. import tkinter as tkdef show_selection():
  2.     print("Selection is:", var.get())root = tk.Tk()var = tk.BooleanVar()checkbutton = tk.Checkbutton(root, text="Select me", variable=var, command=show_selection)
  3. checkbutton.pack()root.mainloop()
复制代码

 

3、为Radiobutton组件(单选择钮)绑定回调函数
  1. import tkinter as tkdef show_selection():
  2.     print("Selection is:", var.get())root = tk.Tk()var = tk.StringVar()radiobutton1 = tk.Radiobutton(root, text="Option 1", variable=var, value="Option 1", command=show_selection)
  3. radiobutton2 = tk.Radiobutton(root, text="Option 2", variable=var, value="Option 2", command=show_selection)radiobutton1.pack()
  4. radiobutton2.pack()root.mainloop()
复制代码

 

4、为Listbox组件(列表组件)绑定回调函数
  1. import tkinter as tkdef show_selection(event):
  2.     selection = event.widget.curselection()
  3.     print("Selection is:", event.widget.get(selection))root = tk.Tk()listbox = tk.Listbox(root)
  4. listbox.insert("end", "Option 1")
  5. listbox.insert("end", "Option 2")
  6. listbox.bind("<<ListboxSelect>>", show_selection)listbox.pack()root.mainloop()
复制代码

 

5、为Spinbox组件(条框)绑定回调函数
  1. import tkinter as tk
  2. # Python学习交流扣裙:708525271
  3. def show_selection():
  4.     print("Selection is:", spinbox.get())root = tk.Tk()spinbox = tk.Spinbox(root, values=(1, 2, 3,4,5), command=show_selection)
  5. spinbox.pack()root.mainloop()
复制代码
 
运行后,选择不同的参数,回传到了spinbox组件

 

6、为Scale组件(滑条)绑定回调函数
  1. import tkinter as tkdef show_selection(value):
  2.     print("Selection is:", value)root = tk.Tk()scale = tk.Scale(root, from_=0, to=100, command=show_selection)
  3. scale.pack()root.mainloop()
复制代码

 

7、为Scrollbar组件(滚动条)绑定回调函数
  1. import tkinter as tkdef scroll(event):
  2.     scrollbar.set(event.widget.get())root = tk.Tk()scrollbar = tk.Scrollbar(root, orient="vertical")
  3. scrollbar.pack(side="right", fill="y")listbox = tk.Listbox(root, yscrollcommand=scrollbar.set)
  4. for i in range(100):
  5.     listbox.insert("end", "Option " + str(i))scrollbar.config(command=listbox.yview)
  6. listbox.bind("<MouseWheel>", scroll)listbox.pack()root.mainloop()
复制代码

 

8、为Canvas组件(画布)绑定回调函数
  1. import tkinter as tkdef draw_line(event):
  2.     canvas.create_line(0, 0, event.x, event.y)root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  3. canvas.bind("<Button-1>", draw_line)canvas.pack()root.mainloop()
复制代码

 

9、为Text组件(文本框)绑定回调函数
  1. import tkinter as tkdef count_characters(event):
  2.     text = event.widget.get("1.0", "end")
  3.     count = len(text.replace("\n", ""))
  4.     print("Character count:", count)root = tk.Tk()text = tk.Text(root)
  5. text.bind("<KeyRelease>", count_characters)text.pack()root.mainloop()
复制代码

 

10、为Menu组件(菜单)绑定回调函数
  1. import tkinter as tkdef say_hello():
  2.     print("Hello World!")root = tk.Tk()menubar = tk.Menu(root)filemenu = tk.Menu(menubar, tearoff=0)
  3. filemenu.add_command(label="New")
  4. filemenu.add_command(label="Open")
  5. filemenu.add_command(label="Save")filemenu.add_separator()
  6. filemenu.add_command(label="Exit", command=root.quit)editmenu = tk.Menu(menubar, tearoff=0)
  7. editmenu.add_command(label="Copy")
  8. editmenu.add_command(label="Cut")
  9. editmenu.add_command(label="Paste")
  10. editmenu.add_command(label="显示问候",command=say_hello)helpmenu = tk.Menu(menubar, tearoff=0)
  11. helpmenu.add_command(label="About")menubar.add_cascade(label="File", menu=filemenu)
  12. menubar.add_cascade(label="Edit", menu=editmenu)
  13. menubar.add_cascade(label="Help", menu=helpmenu)root.config(menu=menubar)root.mainloop()
复制代码

 

11、为Canvas(画布)中的图形对象绑定回调函数
  1. import tkinter as tkdef move_object(event):
  2.     canvas.move(rectangle, 10, 10)root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  3. rectangle = canvas.create_rectangle(50, 50, 100, 100, fill="blue")
  4. canvas.tag_bind(rectangle, "<Button-1>", move_object)canvas.pack()root.mainloop()
复制代码

 

当点击蓝色方块时,蓝色方块会移动
12、为Frame组件绑定回调函数
  1. import tkinter as tkdef say_hello():
  2.     print("Hello World!")root = tk.Tk()frame = tk.Frame(root)
  3. button = tk.Button(frame, text="Click me", command=say_hello)
  4. button.pack()
  5. frame.pack()root.mainloop()
复制代码

 

13、为Label组件(标签)绑定回调函数
  1. import tkinter as tkdef say_hello(event):
  2.     label.config(text="Hello World!")root = tk.Tk()label = tk.Label(root, text="Click me")
  3. label.pack()
  4. label.bind("<Button-1>", say_hello)root.mainloop()
复制代码

 

14、为Toplevel组件(顶部操作杆)绑定回调函数
  1. import tkinter as tkdef create_window():
  2.     window = tk.Toplevel(root)
  3.     label = tk.Label(window, text="New Window")
  4.     label.pack()root = tk.Tk()button = tk.Button(root, text="Create window", command=create_window)
  5. button.pack()root.mainloop()
复制代码

 

15、为Canvas中(画布)的图形对象设置鼠标样式
  1. import tkinter as tkdef set_cursor(event):
  2.     canvas.config(cursor="crosshair")root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  3. canvas.bind("<Motion>", set_cursor)canvas.pack()root.mainloop()
复制代码

 

16、为Entry组件绑定回调函数
  1. import tkinter as tk
  2. #   Python学习交流裙:708525271
  3. def show_input(event):
  4.     print("Input is:", entry.get())root = tk.Tk()entry = tk.Entry(root)
  5. entry.bind("<Return>", show_input)entry.pack()
  6. root.mainloop()
复制代码

 

17、为Text组件设置快捷键
  1. import tkinter as tkdef copy(event):
  2.     text.event_generate("<Control-c>")root = tk.Tk()text = tk.Text(root)
  3. text.bind("<Control-c>", lambda e: print("Copied!"))button = tk.Button(root, text="Copy", command=lambda: copy(None))
  4. button.pack()text.pack()
复制代码
 
18、为Canvas中的图形对象添加标签
  1. import tkinter as tkdef show_label(event):
  2.     item = canvas.find_withtag("current")
  3.     canvas.itemconfig(item, tags=("item", "selected"))
  4.     canvas.itemconfig("label", text="Selected item: " + str(item[0]))root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  5. rectangle = canvas.create_rectangle(50, 50, 100, 100, fill="blue", tags=("item"))
  6. label = canvas.create_text(150, 20, text="No item selected", tags=("label"))canvas.bind("<Button-1>", show_label)canvas.pack()root.mainloop()
复制代码
 
验证程序能够运行,且可以显示在没有选择前、选择后。

 

19、为Canvas中的图形对象设置动画效果
  1. import tkinter as tkdef animate():
  2.     canvas.move(rectangle, 2, 2)
  3.     canvas.after(10, animate)root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  4. rectangle = canvas.create_rectangle(50, 50, 100, 100, fill="blue")animate()canvas.pack()root.mainloop()
复制代码
 
经过验证,程序可以运行,蓝色的图形会运动到右下角。

 

20、为Menu组件设置图片
  1. import tkinter as tkroot = tk.Tk()menubar = tk.Menu(root)filemenu = tk.Menu(menubar, tearoff=0)
  2. filemenu.add_command(label="New", image=tk.PhotoImage(file="D:\\test\\test\\icons\\new.png"))
  3. filemenu.add_command(label="Open", image=tk.PhotoImage(file="D:\\test\\test\\icons\\open.png"))
  4. filemenu.add_command(label="Save", image=tk.PhotoImage(file="D:\\test\\test\\icons\\save.png"))
  5. filemenu.add_separator()
  6. filemenu.add_command(label="Exit", command=root.quit)editmenu = tk.Menu(menubar, tearoff=0)
  7. editmenu.add_command(label="Copy", image=tk.PhotoImage(file="D:\\test\\test\\icons\\copy.png"))
  8. editmenu.add_command(label="Cut", image=tk.PhotoImage(file="D:\\test\\test\\icons\\cut.png"))
  9. editmenu.add_command(label="Paste", image=tk.PhotoImage(file="D:\\test\\test\\icons\\paste.png"))helpmenu = tk.Menu(menubar, tearoff=0)
  10. helpmenu.add_command(label="About", image=tk.PhotoImage(file="D:\\test\\test\\icons\\about.png"))menubar.add_cascade(label="File", menu=filemenu)
  11. menubar.add_cascade(label="Edit", menu=editmenu)
  12. menubar.add_cascade(label="Help", menu=helpmenu)root.config(menu=menubar)root.mainloop()
复制代码
 
程序测试好像不成功,没有找到原因

 

21、为Canvas中的图形对象设置背景图片
  1. import tkinter as tkroot = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  2. canvas.config(bg="white")photo = tk.PhotoImage(file="icons/background.png")
  3. canvas.create_image(0, 0, image=photo, anchor="nw")canvas.pack()root.mainloop()
复制代码
 
22、为Canvas中的图形对象设置鼠标拖动效果
  1. import tkinter as tkdef start_drag(event):
  2.     global drag_pos
  3.     drag_pos = (event.x, event.y)def drag(event):
  4.     global drag_pos
  5.     delta_x = event.x - drag_pos[0]
  6.     delta_y = event.y - drag_pos[1]
  7.     canvas.move(rectangle, delta_x, delta_y)
  8.     drag_pos = (event.x, event.y)root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  9. rectangle = canvas.create_rectangle(50, 50, 100, 100, fill="blue")
  10. canvas.tag_bind(rectangle, "<Button-1>", start_drag)
  11. canvas.tag_bind(rectangle, "<B1-Motion>", drag)canvas.pack()root.mainloop()
复制代码
 
23、为Canvas中的图形对象设置点击特效
  1. import tkinter as tkdef toggle_color(event):
  2.     canvas.itemconfig(event.widget, fill="green" if event.widget in selected else "blue")
  3.     if event.widget in selected:
  4.         selected.remove(event.widget)
  5.     else:
  6.         selected.append(event.widget)root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)rectangles = []
  7. selected = []for i in range(3):
  8.     for j in range(3):
  9.         rectangle = canvas.create_rectangle(i*100, j*100, i*100+50, j*100+50, fill="blue")
  10.         canvas.tag_bind(rectangle, "<Button-1>", toggle_color)
  11.         rectangles.append(rectangle)canvas.pack()root.mainloop()
复制代码
 
24、为Canvas中的图形对象设置缩放效果
  1. import tkinter as tkdef zoom(delta):
  2.     scale = 1.1 if delta > 0 else 0.9
  3.     canvas.scale("all", 0, 0, scale, scale)root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  4. rectangle = canvas.create_rectangle(50, 50, 100, 100, fill="blue")
  5. canvas.bind("<MouseWheel>", lambda e: zoom(e.delta))canvas.pack()root.mainloop()
复制代码
 
25、为Canvas中的图形对象设置旋转效果
  1. import tkinter as tk
  2. import mathdef rotate(delta):
  3.     angle = math.radians(delta)
  4.     rx, ry = canvas.coords(rectangle)[:2]
  5.     cos = math.cos(angle)
  6.     sin = math.sin(angle)
  7.     x, y = canvas.coords(rectangle)[2:4]
  8.     tx = cos * (x-rx) - sin * (y-ry) + rx
  9.     ty = sin * (x-rx) + cos * (y-ry) + ry
  10.     canvas.coords(rectangle, rx, ry, tx, ty)root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)
  11. rectangle = canvas.create_rectangle(50, 50, 100, 100, fill="blue")
  12. canvas.bind("<MouseWheel>", lambda e: rotate(e.delta))canvas.pack()root.mainloop()
复制代码
 
26、为Canvas中的图形对象设置反色效果
  1. import tkinter as tkdef toggle_color(event):
  2.     pixels = canvas.itemcget(event.widget, "fill")
  3.     if pixels == "blue":
  4.         canvas.itemconfig(event.widget, fill="yellow")
  5.     else:
  6.         canvas.itemconfig(event.widget, fill="blue")root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)rectangles = []for i in range(3):
  7.     for j in range(3):
  8.         rectangle = canvas.create_rectangle(i*100, j*100, i*100+50, j*100+50, fill="blue")
  9.         canvas.tag_bind(rectangle, "<Button-1>", toggle_color)
  10.         rectangles.append(rectangle)canvas.pack()root.mainloop()
复制代码
 
27、为Canvas中的图形对象设置闪烁效果
  1. import tkinter as tkdef start_blink(event):
  2.     canvas.itemconfig(event.widget, fill="yellow")
  3.     canvas.after(200, lambda: canvas.itemconfig(event.widget, fill="blue"))
  4.     canvas.after(400, lambda: canvas.itemconfig(event.widget, fill="yellow"))
  5.     canvas.after(600, lambda: canvas.itemconfig(event.widget, fill="blue"))root = tk.Tk()canvas = tk.Canvas(root, width=300, height=300)rectangles = []
  6.                                                                                                                                                                                                                                                                                                                                                                                                          root.mainloop()
复制代码
 
  1. [/code][align=center][/align]
  2.  
  3. [align=center][img]https://img-blog.csdnimg.cn/e179f5ffb7e84315846c0e98eb417a3c.png[/img][/align]
  4. 28、为Menu组件设置子菜单
  5. [code]import tkinter as tk
  6. root = tk.Tk()
  7. menubar = tk.Menu(root)
  8. filemenu = tk.Menu(menubar, tearoff=0)
  9. filemenu.add_command(label="New")
  10. filemenu.add_command(label="Open")
  11. filemenu.add_command(label="Save")
  12. subfilemenu = tk.Menu(filemenu, tearoff=0)
  13. subfilemenu.add_command(label="Option 1")
  14. subfilemenu.add_command(label="Option 2")
  15. filemenu.add_cascade(label="More", menu=subfilemenu)
  16. filemenu.add_separator()
  17. filemenu.add_command(label="Exit", command=root.quit)
  18. menubar.add_cascade(label="File", menu=filemenu)
  19. root.config(menu=menubar)
  20. root.mainloop()
复制代码

 

29、为Canvas中的图形对象设置尺寸调整效果
  1. import tkinter as tk
  2. def start_resize(event):
  3.     global resize_pos
  4.     resize_pos = (event.x, event.y)
  5. # Python学习交流扣裙 708525271
  6. def resize(event):
  7.     global resize_pos
  8.     delta_x = event.x - resize_pos[0]
  9.     delta_y = event.y - resize_pos[1]
  10.     x, y, w, h = canvas.coords(rectangle)
  11.     if event.widget == resize_left:
  12.         canvas.coords(rectangle, x+delta_x, y, w-delta_x, h)
  13.     elif event.widget == resize_top:
  14.         canvas.coords(rectangle, x, y+delta_y, w, h-delta_y)
  15.     elif event.widget == resize_right:
  16.         canvas.coords(rectangle, x, y, w+delta_x, h)
  17.     elif event.widget == resize_bottom:
  18.         canvas.coords(rectangle, x, y, w, h+delta_y)
  19.     resize_pos = (event.x, event.y)
  20. root = tk.Tk()
  21. canvas = tk.Canvas(root, width=300, height=300)
  22. rectangle = canvas.create_rectangle(50, 50, 100, 100, fill="blue")
  23. resize_left = tk.Canvas(canvas, width=10, height=10, bd=-2, bg="white", cursor="sb_h_double_arrow")
  24. resize_top = tk.Canvas(canvas, width=10, height=10, bd=-2, bg="white", cursor="sb_v_double_arrow")
  25. resize_right = tk.Canvas(canvas, width=10, height=10, bd=-2, bg="white", cursor="sb_h_double_arrow")
  26. resize_bottom = tk.Canvas(canvas, width=10, height=10, bd=-2, bg="white", cursor="sb_v_double_arrow")
  27. resize_left.place(x=50-5, y=75-5)
  28. resize_top.place(x=75-5, y=50-5)
  29. resize_right.place(x=100-5, y=75-5)
  30. resize_bottom.place(x=75-5, y=100-5)
  31. resize_left.bind("<Button-1>", start_resize)
  32. resize_top.bind("<Button-1>", start_resize)
  33. resize_right.bind("<Button-1>", start_resize)
  34. resize_bottom.bind("<Button-1>", start_resize)
  35. resize_left.bind("<B1-Motion>", resize)
  36. resize_top.bind("<B1-Motion>", resize)
  37. resize_right.bind("<B1-Motion>", resize)
  38. resize_bottom.bind("<B1-Motion>", resize)
  39. canvas.pack()
  40. root.mainloop()
复制代码

 
  1. # 我给大家准备了25个非常实用的Python爬虫项目,帮助大家更好的学习爬虫。
  2. # 大家也可根据项目的需求,自己构建解决方法,提高编程水平。
  3. # 全套的python自学视频以及项目,已经打包完毕
  4. # 都放在这个扣裙了 708525271 直接拿走学习了!
复制代码
 

 

 


代码整理不易,建议保存。
今天的分享就到这结束了,下次见!来源:https://www.cnblogs.com/hahaa/p/17437004.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具