Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
目录:1、简单实例
2、Label控件
3、Button控件
4、Entry控件
5、点击按钮输出输入框中的内容
6、Text控件
7、带滚动条的Text
8、Checkbutton多选框控件
9、Radiobutton单选框
10、Listbox控件一
11、Listbox控件二
12、Listbox控件三
13、Listbox四
14、Scale控件
15、Spinbox控件
16、Menu顶层菜单
17、Menu鼠标右键菜单
18、Combobox下拉控件
19、Frame控件
20、表格数据
21、树状数据
22、绝对布局
23、相对布局
24、表格布局
25、鼠标点击事件
26、鼠标移动事件
27、鼠标释放事件
28、进入和离开事件
29、响应所有按键的事件
30、响应特殊按键事件
31、指定按键事件
32、组合按键事件

1、简单实例

  下面的代码是创建出一个窗口,其他的操作就在这个平台上进行。执行之后会在桌面弹出一个窗口,窗口的标题就是代码中设置的win.title。这里说一下,我使用的版本是python3.6。后面的内容尽量按顺序看,后面的控件也许用到前面写到的东西。

 #!/usr/bin/env python
# -*- coding:utf-8 -*- import tkinter # 创建主窗口
win = tkinter.Tk()
# 设置标题
win.title("yudanqu")
# 设置大小和位置
win.geometry("400x400+200+50") # 进入消息循环,可以写控件 win.mainloop()

2、Label控件

 #!/usr/bin/env python
# -*- coding:utf-8 -*- import tkinter win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") '''
Label:标签控件,可以显示文本
'''
# win:父窗体
# text:显示的文本内容
# bg:背景色
# fg:字体颜色
# font:字体
# wraplength:指定text文本中多宽之后换行
# justify:设置换行后的对齐方式
# anchor:位置 n北,e东,w西,s南,center居中;还可以写在一起:ne东北方向
label = tkinter.Label(win,
text="this is a word",
bg="pink", fg="red",
font=("黑体", 20),
width=20,
height=10,
wraplength=100,
justify="left",
anchor="ne") # 显示出来
label.pack() win.mainloop()

3、Button控件

 #!/usr/bin/env python
# -*- coding:utf-8 -*- import tkinter def func():
print("aaaaaaaaaaaaaaaaaaaaaaa") win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # 创建按钮
button1 = tkinter.Button(win, text="按钮", command=func, width=10, height=10)
button1.pack() button2 = tkinter.Button(win, text="按钮", command=lambda: print("bbbbbbbbbbbb"))
button2.pack() button3 = tkinter.Button(win, text="退出", command=win.quit)
button3.pack() win.mainloop()

4、Entry控件

 #!/usr/bin/env python
# -*- coding:utf-8 -*- import tkinter win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") '''
Entry:输入控件,用于显示简单的文本内容
''' # 密文显示
entry1 = tkinter.Entry(win, show="*") # show="*" 可以表示输入密码
entry1.pack() # 绑定变量
e = tkinter.Variable() entry2 = tkinter.Entry(win, textvariable=e)
entry2.pack() # e就代表输入框这个对象
# 设置值
e.set("wewewewewewe")
# 取值
print(e.get())
print(entry2.get()) win.mainloop()

5、点击按钮输出输入框中的内容

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import tkinter win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") def showinfo():
# 获取输入的内容
print(entry.get()) entry = tkinter.Entry(win)
entry.pack() button = tkinter.Button(win, text="按钮", command=showinfo)
button.pack() win.mainloop()

6、Text控件

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import tkinter win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") '''
文本控件:用于显示多行文本
''' # height表示的是显示的行数
text = tkinter.Text(win, width=30, height=10)
text.pack() str = '''盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。''' text.insert(tkinter.INSERT, str) win.mainloop()

7、带滚动条的Text

 #!/usr/bin/env python
# -*- coding:utf-8 -*- import tkinter win = tkinter.Tk()
win.title("yudanqu")
# win.geometry("400x400+200+50") '''
文本控件:用于显示多行文本
''' # 创建滚动条
scroll = tkinter.Scrollbar() text = tkinter.Text(win, width=30, height=10)
# side放到窗体的哪一侧, fill填充
scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
text.pack(side=tkinter.LEFT, fill=tkinter.Y)
# 关联
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set) text.pack() str = '''盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。''' text.insert(tkinter.INSERT, str) win.mainloop()

8、Checkbutton多选框控件

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import tkinter win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") def updata():
message = ""
if hobby1.get() ==True:
message += "money\n"
if hobby2.get() == True:
message += "power\n"
if hobby3.get() == True:
message += "people\n" # 清空text中所有内容
text.delete(0.0, tkinter.END)
text.insert(tkinter.INSERT, message) # 要绑定的变量
hobby1 = tkinter.BooleanVar()
# 多选框
check1 = tkinter.Checkbutton(win, text="money", variable=hobby1, command=updata)
check1.pack()
hobby2 = tkinter.BooleanVar()
check2 = tkinter.Checkbutton(win, text="power", variable=hobby2, command=updata)
check2.pack()
hobby3 = tkinter.BooleanVar()
check3 = tkinter.Checkbutton(win, text="people", variable=hobby3, command=updata)
check3.pack() text = tkinter.Text(win, width=50, height=5)
text.pack() win.mainloop()

9、Radiobutton单选框

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") def updata():
print(r.get()) # 绑定变量,一组单选框要绑定同一个变量,就能区分出单选框了
r = tkinter.IntVar() radio1 = tkinter.Radiobutton(win, text="one", value=1, variable=r, command=updata)
radio1.pack()
radio2 = tkinter.Radiobutton(win, text="two", value=2, variable=r, command=updata)
radio2.pack() win.mainloop()

10、Listbox控件一

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import tkinter win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") '''
列表框控件:可以包含一个或多个文本框
作用:在listbox控件的小窗口显示一个字符串
''' # 创建一个listbox,添加几个元素
lb = tkinter.Listbox(win, selectmode=tkinter.BROWSE)
lb.pack() for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
# 按顺序添加
lb.insert(tkinter.END, item) # 在开始添加
lb.insert(tkinter.ACTIVE, "cool") # 将列表当做一个元素添加
# lb.insert(tkinter.END, ["very good", "very nice"]) # 删除:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只删除第一个索引处的内容
lb.delete(1,3) # 选中:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只选中第一个索引处的内容
lb.select_set(2,3) # 取消选中:参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只取消第一个索引处的内容
lb.select_clear(2) # 获取到列表中的元素个数
print(lb.size())
# 获取值
print(lb.get(2,3)) # 返回当前的索引项,不是item元素
print(lb.curselection()) # 判断:一个选项是否被选中
print(lb.selection_includes(3)) win.mainloop()

11、Listbox控件二

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # 绑定变量
lbv = tkinter.StringVar() # 与BORWSE相似,但是不支持鼠标按下后移动选中位置
lb = tkinter.Listbox(win, selectmode=tkinter.SINGLE, listvariable=lbv)
lb.pack() for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
# 按顺序添加
lb.insert(tkinter.END, item) # 打印当前列表中的选型
print(lbv.get()) # 设置选项
# lbv.set(("1","2","3")) # 绑定事件
def myprint(event):
# print(lb.curselection()) # 返回下标
print(lb.get(lb.curselection())) # 返回值
lb.bind("<Double-Button-1>", myprint) win.mainloop()

12、Listbox控件三

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
# win.geometry("400x400+200+50") # EXTENDED:可以使listbox支持shift和Ctrl
lb = tkinter.Listbox(win, selectmode=tkinter.EXTENDED)
lb.pack() for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd", "good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
# 按顺序添加
lb.insert(tkinter.END, item) # 滚动条
sc = tkinter.Scrollbar(win)
sc.pack(side=tkinter.RIGHT, fill=tkinter.Y)
# 配置
lb.configure(yscrollcommand=sc.set)
lb.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
# 额外给属性赋值
sc["command"] = lb.yview win.mainloop()

13、Listbox四

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # MULTIPLE支持多选
lb = tkinter.Listbox(win, selectmode=tkinter.MULTIPLE)
lb.pack() for item in ["good", "nice", "handsome", "aaa", "bbb", "ccc", "ddd"]:
# 按顺序添加
lb.insert(tkinter.END, item) win.mainloop()

14、Scale控件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") '''
供用户通过拖拽指示器来改变变量的值,可以水平,也可以竖直
''' # tkinter.HORIZONTAL水平
# tkinter.VERTICAL 竖直(默认)
# length:水平时表示宽度,竖直时表示高度
# tickintervar :选择值将会为该值得倍数 scale1 = tkinter.Scale(win, from_=0, to=100, orient=tkinter.HORIZONTAL, tickinterval=10, length=200)
scale1.pack() # 设置值
scale1.set(20) # 取值
# print(scale1.get()) def showNum():
print(scale1.get())
tkinter.Button(win, text="按钮", command=showNum).pack() win.mainloop()

15、Spinbox控件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") '''
数值范围控件
''' # 绑定变量
v = tkinter.StringVar() def updata():
print(v.get()) # increment:步长,默认为1
# values要输入一个元组 最好不要和from和to同时使用,而且步长也没用
# command 只要值改变就会执行updata方法
sp = tkinter.Spinbox(win, from_=0, to=100, increment=5,
textvariable=v, command=updata)
# sp = tkinter.Spinbox(win, values=(0,2,4,6,8))
sp.pack() # 赋值
v.set(20)
# 取值
print(v.get()) win.mainloop()

16、Menu顶层菜单

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # 菜单条
menubar = tkinter.Menu(win)
win.config(menu=menubar) def func():
print("**********") # 创建一个菜单选项
menu1 = tkinter.Menu(menubar, tearoff=False) # 给菜单选项添加内容
for item in ['python','c','java','c++', 'c#','php','B','退出']:
if item == '退出':
# 添加分割线
menu1.add_separator()
menu1.add_command(label=item, command=win.quit)
else:
menu1.add_command(label=item, command=func) # 向菜单条上添加菜单选项
menubar.add_cascade(label='语言', menu=menu1) win.mainloop()

17、Menu鼠标右键菜单

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # 菜单条
menubar = tkinter.Menu(win) def func():
print("**********") # 菜单
menu = tkinter.Menu(menubar, tearoff=False)
# 给菜单选项添加内容
for item in ['python','c','java','c++', 'c#','php','B','退出']:
if item == '退出':
# 添加分割线
menu.add_separator()
menu.add_command(label=item, command=win.quit)
else:
menu.add_command(label=item, command=func) menubar.add_cascade(label="语言", menu=menu) def showMenu(event):
menubar.post(event.x_root, event.y_root) win.bind("<Button-3>", showMenu) win.mainloop()

18、Combobox下拉控件

 import tkinter
from tkinter import ttk win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # 绑定变量
cv = tkinter.StringVar() com = ttk.Combobox(win, textvariable=cv)
com.pack() # 设置下拉数据
com["value"] = ("黑龙江", "吉林", "辽宁") # 设置默认值
com.current(0) # 绑定事件 def func(event):
print(com.get())
print(cv.get())
com.bind("<<ComboboxSelected>>", func) win.mainloop()

19、Frame控件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") '''
框架控件:在桌面上显示一个矩形区域,多作为一个容器控件
''' frm = tkinter.Frame(win)
frm.pack() # left
frm_l = tkinter.Frame(frm)
tkinter.Label(frm_l, text="左上", bg="pink").pack(side=tkinter.TOP)
tkinter.Label(frm_l, text="左下", bg="blue").pack(side=tkinter.TOP)
frm_l.pack(side=tkinter.LEFT) # right
frm_r = tkinter.Frame(frm)
tkinter.Label(frm_r, text="右上", bg="green").pack(side=tkinter.TOP)
tkinter.Label(frm_r, text="右下", bg="red").pack(side=tkinter.TOP)
frm_r.pack(side=tkinter.RIGHT) win.mainloop()

20、表格数据

 import tkinter
from tkinter import ttk win = tkinter.Tk()
win.title("yudanqu")
win.geometry("600x400+200+50") # 表格
tree = ttk.Treeview(win)
tree.pack() # 定义列
tree["columns"] = ("姓名","年龄","身高","体重")
# 设置列,列还不显示
tree.column("姓名", width=100)
tree.column("年龄", width=100)
tree.column("身高", width=100)
tree.column("体重", width=100) # 设置表头
tree.heading("姓名", text="姓名-name")
tree.heading("年龄", text="年龄-age")
tree.heading("身高", text="身高-height")
tree.heading("体重", text="体重-weight") # 添加数据
tree.insert("", 0, text="line1", values=("小郑","","177cm","70kg"))
tree.insert("", 1, text="line2", values=("小张","","188cm","90kg")) win.mainloop()

21、树状数据

 import tkinter
from tkinter import ttk win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") tree = ttk.Treeview(win)
tree.pack() # 添加一级树枝
treeF1 = tree.insert("",0,"中国",text= "中国Chi", values=("F1"))
treeF2 = tree.insert("",1,"美国",text= "美国USA", values=("F1"))
treeF3 = tree.insert("",2,"英国",text= "英国UK", values=("F1")) # 二级树枝
treeF1_1 = tree.insert(treeF1,0,"黑龙江",text="中国黑龙江",values=("F1_1"))
treeF1_2 = tree.insert(treeF1,1,"吉林",text="中国吉林",values=("F1_2"))
treeF1_3 = tree.insert(treeF1,2,"辽宁",text="中国辽宁",values=("F1_3")) treeF2_1 = tree.insert(treeF2,0,"aaa",text="aaaa",values=("F2_1"))
treeF2_2 = tree.insert(treeF2,1,"bbb",text="bbbb",values=("F2_2"))
treeF2_3 = tree.insert(treeF2,2,"ccc",text="cccc",values=("F2_3")) # 三级树枝
treeF1_1_1 = tree.insert(treeF1_1,0,"哈尔滨",text="黑龙江哈尔滨")
treeF1_1_2 = tree.insert(treeF1_1,1,"五常",text="黑龙江五常") win.mainloop()

22、绝对布局

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") label1 = tkinter.Label(win, text="good", bg="blue")
label2 = tkinter.Label(win, text="nice", bg="red")
label3 = tkinter.Label(win, text="cool", bg="green") # 绝对布局,窗口的变化对位置没有影响
label1.place(x=10,y=10)
label2.place(x=50,y=50)
label3.place(x=100,y=100) win.mainloop()

23、相对布局

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") label1 = tkinter.Label(win, text="good", bg="blue")
label2 = tkinter.Label(win, text="nice", bg="red")
label3 = tkinter.Label(win, text="cool", bg="green") # 相对布局,窗体改变对控件有影响
label1.pack(fill=tkinter.Y, side=tkinter.LEFT)
label2.pack(fill=tkinter.X, side=tkinter.TOP)
label3.pack() win.mainloop()

24、表格布局

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") label1 = tkinter.Label(win, text="good", bg="blue")
label2 = tkinter.Label(win, text="nice", bg="red")
label3 = tkinter.Label(win, text="cool", bg="green")
label4 = tkinter.Label(win, text="handsome", bg="yellow") # 表格布局
label1.grid(row=0,column=0)
label2.grid(row=0,column=1)
label3.grid(row=1,column=0)
label4.grid(row=1,column=1) win.mainloop()

25、鼠标点击事件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") def func(event):
print(event.x, event.y) # <Button-1> 鼠标左键
# <Button-2> 鼠标滚轮
# <Button-1> 鼠标右键
# <Double-Button-1> 鼠标双击左键
# <Triple-Button-1> 鼠标三击左键 button1 = tkinter.Button(win, text="leftmouse button")
# bind 给控件绑定数据(参数一是绑定的事件,参数二是触发事件的函数)
button1.bind("<Button-1>", func)
button1.pack() win.mainloop()

26、鼠标移动事件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # <B1-Motion> 左键移动
# <B2-Motion> 中键移动
# <B3-Motion> 右键移动 label = tkinter.Label(win, text="*********")
label.pack() def func(event):
print(event.x, event.y) label.bind("<B1-Motion>", func) win.mainloop()

27、鼠标释放事件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # <ButtonRelease-1> 释放鼠标左键
# <ButtonRelease-2> 释放鼠标中键
# <ButtonRelease-3> 释放鼠标右键 label = tkinter.Label(win, text="*********", bg="red")
label.pack() def func(event):
print(event.x, event.y) label.bind("<ButtonRelease-1>", func) win.mainloop()

28、进入和离开事件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # <Enter> 当鼠标进入控件时触发事件
# <Leave> 当鼠标离开控件时触发事件 label = tkinter.Label(win, text="*********", bg="red")
label.pack() def func(event):
print(event.x, event.y) label.bind("<Enter>", func)
label.bind("<Leave>", func) win.mainloop()

29、响应所有按键的事件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # <Key> 响应所有的按键(要有焦点) label = tkinter.Label(win, text="*********", bg="red")
# 设置焦点
label.focus_set()
label.pack() def func(event):
print("event.char=", event.char)
print("event.keycode=", event.keycode) label.bind("<Key>", func) win.mainloop()

30、响应特殊按键事件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # <Shift_L> 只响应左侧的shift键
# <Shift_R>
# <F5>
# <Return> 也就是回车键
# <BackSpace> 返回,也就是退格键 label = tkinter.Label(win, text="*********", bg="red")
# 设置焦点
label.focus_set()
label.pack() def func(event):
print("event.char=", event.char)
print("event.keycode=", event.keycode) label.bind("<Shift_L>", func) win.mainloop()

31、指定按键事件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") label = tkinter.Label(win, text="*********", bg="red")
# 设置焦点
label.focus_set()
label.pack() def func(event):
print("event.char=", event.char)
print("event.keycode=", event.keycode) win.bind("a", func) # 注意前面改成了win,只需要写出按键名即可 win.mainloop()

32、组合按键事件

 import tkinter

 win = tkinter.Tk()
win.title("yudanqu")
win.geometry("400x400+200+50") # <Control-Alt-a>
# <Shift-Up>
# 只是control+alt不行 label = tkinter.Label(win, text="*********", bg="red")
# 设置焦点
label.focus_set()
label.pack() def func(event):
print("event.char=", event.char)
print("event.keycode=", event.keycode) win.bind("<Control-Alt-a>", func) # 注意前面改成了win,只需要写出按键名即可 win.mainloop()

tkinter python(图形开发界面) 转自:渔单渠的更多相关文章

  1. tkinter python(图形开发界面)

    Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macinto ...

  2. thinter图形开发界面

    tkinter编程步骤 导入Tkinter 创建控件 import thinter 创建主窗口 #win = tkinter.Tk() 设置标题 win.title("xiaoxin&quo ...

  3. python自动化开发-[第二十天]-form表单,CBV和FBV,序列化

    1.CBV和FBV的用法 2.序列化用法 3.form表单 一.CBV和FBV 1.cbv是 class based view(基于类),fbv是function based view(基于函数) 2 ...

  4. 第十五章 使用PyQt进行Python图形界面程序开发

    在基础知识部分的最后一章<第十三章 Python基础篇结束章>的<第13.3节 图形界面开发tkinter>简单介绍了Python内置图形界面标准库tkinter,当时特别强调 ...

  5. python 图形界面开发

    用python来开发图形界面,确实不是很方便,没有c#,Java,甚至VB来得容易.几个控件拖拽,然后响应事件. 用python写脚本,或者web service来处理一般工作,绰绰有余.但有的时候, ...

  6. Python图形界面开发编程:wxPython(浅尝篇)

    Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 ...

  7. python图形界面(GUI)设计

    不要问我为什么要用 python 来做这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有好的解决方案.逛了一圈下来,总体上来说,python 图形界面有以下几个可行度比较高的解决方案. 1. py ...

  8. Python 图形界面(GUI)设计

    不要问我为什么要用 Python 来做这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有好的解决方案.逛了一圈下来,总体上来说,Python 图形界面有以下几个可行度比较高的解决方案. 1. py ...

  9. Python图形界面Tk

    最近在学习Python,在使用Tkinter做图形界面时遇到了几个小问题,网上查了一下,在Python2.x导入的是Tkinter,Python3则是tkinter.而且导入的simpledialog ...

随机推荐

  1. CSS Variables:css自定义属性的使用

    CSS Variables,一个并不是那么新的东西,但对css来说绝对是一场革命.之前使用变量的时候,需要借助sass.less等预处理工具来实现,现在我们可以直接使用css来声明变量. 一.兼容性 ...

  2. 使用localstorage.setItem()存储对象

    使用localstorage.setItem(name,value)存储JSON对象时会发现浏览器存储的内容为[object,object],并不是我们想要的内容,这是因为我们在存储的时候没有进行类型 ...

  3. go语言new和make

    1.new func new(Type) *Type 内建函数,内建函数 new 用来分配内存,它的第一个参数是一个类型,它的返回值是一个指向新分配类型默认值的指针! 2.make func make ...

  4. VSCode 本地如何查看历史页面

    1.首先要在VSCode的扩展中安装一个 Local history插件,蓝色框部分不用管,直接安装即可 2.安装并操作:安装后,修改 productManage/supplierList/addSu ...

  5. 微信公众号_Deejo说_2019

    说明: 1. 文中的内容均来自Deejo说微信公众号 2. 微信中搜索"Deejo说"公众号,可关注 麻麻英语 ——2019.09.10—— It’s my treat. 我来请客 ...

  6. 牛顿插值法(c++)

    X Y 0.40 0.41075 0.55 0.57815 0.65 0.69675 0.80 0.88811 0.90 1.02652 1.05 1.25382 #include using nam ...

  7. if, if/else, if /elif/else,case

    一.if语句用法 if expression then command fi 例子:使用整数比较运算符 read -p "please input a integer:" a if ...

  8. Oracle中如何修改已存在数据的列名的数据类型

    在oracle中,如何修改已存在数据列名的数据类型 一般人直接在表结构设计这里修改,这里只适合修改列没有数据,可修改 那么,如何这个列是有数据,是怎么修改的呢? 直接修改会Oracle错误 第一步:先 ...

  9. bat脚本的基本命令语法

    bat脚本的基本命令语法 一.批处理的常见命令 1.REM 和 ::     2.ECHO 和 @     3.PAUSE     4.ERRORLEVEL     5.TITLE     6.COL ...

  10. 缓存:修改Hosts不生效

    修改Hosts为何不生效,是DNS缓存? - Barret李靖 - 博客园https://www.cnblogs.com/hustskyking/p/hosts-modify.html 换个未打开过的 ...