GUI 用户交互界面

tkinter 介绍

tkinter python自带的gui库,对图形图像处理库tk的封装

其他gui:pythonwin,wxpython,pyQT。。

概念介绍
组件:组成界面的构成内容就是组件。 按钮,文本输入框,滚动条,菜单,列表。。。
窗口:一个软件的矩形区域

界面开发的最小内容:
1.导入tkinter模块
2.创建主窗口对象
3.将主窗口对象加入消息循环当中

组件的摆放方式:
1.pack()方式 ->方向/方位摆放方法
2.grid()方式 ->网格摆放方法
3.place()方式 ->定位摆放方法(推荐)

pack()方式:(少用)
side 设置组件相对于父组件的摆放位置
ipadx,ipady 设置组件的内部间距
padx,pady 设置多个组件之间的外部间距
expand 设置side是否失效

注意:仅仅使用pack无法实现表格方式,必须借助后面的Frame组件才可以实现,非常复杂。

gird()方式:(少用)
row 设置行数 默认为0
column 设置列数 默认为0
rowspan 设置跨行数量
cloumnspan 设置跨列的数量
ipadx,ipady 设置组件内部间距
padx,pady 设置多个组件之间的外部间距

place() 方式:
绝对定位布局:
x 设置距离左上角的水平长度 单位 都是像素
y 设置距离左上角的垂直高度 单位 都是像素
width 设置组件所占据的宽度 单位 都是像素
height 设置组件所占据的宽度 单位 都是像素

相对定位布局:
relx 设置距离左上角的水平长度(取值0~1)
rely 设置距离左上角的垂直高度(取值0~1)
relwidth 设置组件所占据的宽度(取值0~1)
relheight 设置组件所占据的宽度(取值0~1)

以上属性设置都是相对于界面宽度或者高度的百分比,可以根据界面的带下改变而改变~!

place()方式 ->定位摆放方法(推荐)----绝对位置----

 1 #导入模块
 2 import tkinter
 3
 4 #创建主窗口对象
 5 root = tkinter.Tk()
 6 #大小
 7 root.minsize(500,500)
 8
 9 #place()方式 ->定位摆放方法(推荐)----绝对位置----===========================
10 #创建组件
11 btn1 = tkinter.Button(root,text = '按钮1')
12 btn1.place(x = 100 ,y = 20,width= 50,height = 50)
13
14 #创建组件
15 btn2 = tkinter.Button(root,text = '按钮2')
16 btn2.place(x = 200 ,y = 50,width = 300,height = 30)
17
18 #加入消息循环
19 root.mainloop()

place()方式 ->定位摆放方法(推荐)----相对位置----
 1 #导入模块
 2 import tkinter
 3
 4 #创建主窗口对象
 5 root = tkinter.Tk()
 6 #大小
 7 root.minsize(500,500)
 8
 9 #place()方式 ->定位摆放方法(推荐)----相对位置----===========================
10 #创建组件
11 btn1 = tkinter.Button(root,text = '按钮1')
12 btn1.place(relx = 0.2,rely = 0.1,relwidth = 0.1,relheight = 0.1)
13
14 #加入消息循环
15 root.mainloop()

tkinter组件:Button 按钮的样式
Label:标签控件,可以显示文本win:主窗口text:显示的文本内容bg:背景颜色fg:字体颜色font:设置字体属性wraplength:指定text文本中多款之后进行换行anchor:文本显示的位置 n北  e东  s南  w西  center居中  ne  se sw nwjustify:设置换行之后的对齐方式
 1 import tkinter
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.minsize(500,500)
 6 '''
 7
 8 #绝大部分尺寸的默认单位是像素
 9 btn1  = tkinter.Button(root,text='尺寸')
10 btn1.pack(ipadx = 100, ipady = 20)
11 '''
12
13 '''
14
15 #坐标系(提示: 禁止同时使用两种布局)
16 btn2  = tkinter.Button(root,text='坐标系')
17 btn2.place(x = 100, y = 20)
18
19 '''
20
21 #颜色:
22 #颜色单词
23 btn3  = tkinter.Button(root,text='颜色',bg='gold')
24 btn3.pack()
25
26 #hex颜色模式  #红色绿色蓝色  0-255 ->> 使用十六进制
27 btn4  = tkinter.Button(root,text='颜色',bg='#ff0000')
28 btn4.pack()
29
30 #字体
31 btn5  = tkinter.Button(root,text='字体',font = ('黑体',40,'bold','italic'))
32 btn5.pack()
33
34 #锚点
35 btn6  = tkinter.Button(root,text='锚点',anchor='sw')
36 btn6.pack(ipadx = 20, ipady = 20)
37
38 # 三维效果
39 btn7  = tkinter.Button(root,text='3',relief= tkinter.FLAT)
40 btn7.pack()
41
42 #位图
43 btn8  = tkinter.Button(root,text='位图',bitmap = 'question')
44 btn8.pack()
45
46 #鼠标样式
47 btn9  = tkinter.Button(root,text='鼠标',cursor='heart')
48 btn9.pack(ipadx=30,ipady=20)
49
50 #图片设置
51 #将图片设置为图像对象
52 long = tkinter.PhotoImage(file = 'long.gif')
53 btn10 = tkinter.Button(root,text='图片',image=long)
54 btn10.pack()
55
56 #加入消息循环
57 root.mainloop()

 1 import tkinter
 2
 3 # 创建一个主窗口
 4 win = tkinter.Tk()
 5
 6 # 设置 标题
 7 win.title("python-13")
 8
 9 # 设置窗口大小和位置
10 win.geometry("500x500+200+50")
11
12 """
13 Label:标签控件,可以显示文本
14 win:主窗口
15 text:显示的文本内容
16 bg:背景颜色
17 fg:字体颜色
18 font:设置字体属性
19 wraplength:指定text文本中多款之后进行换行
20 anchor:文本显示的位置 n北  e东  s南  w西  center居中  ne  se sw nw
21 justify:设置换行之后的对齐方式
22 """
23 label = tkinter.Label(win,
24                       text = "this is a python test",
25                       bg = "red",
26                       fg = "yellow",
27                       font = ("黑体",25),
28                       height = 5,
29                       width = 10,
30                       wraplength = 100,
31                       # anchor = "ne",
32                       # justify = "center"
33                       )
34 label.pack()
35
36 #启动主窗口
37 win.mainloop()

tkinter组件:画布

 1 import tkinter
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 #创建画布
 8 canvas = tkinter.Canvas(root,bg='white')
 9 canvas.pack()
10
11 #画布中回值长方形
12 canvas.create_rectangle(20,20,100,100,fill='red',outline='yellow')
13
14 root.mainloop()

tkinter组件:复选框

 1 import tkinter
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 #创建组件
 8 #checkbutton = tkinter.Checkbutton(root, text='同意此协议') #设置文本方法1 : 文本不变
 9
10 #设置显示内容tkinter变量
11 text = tkinter.StringVar()
12
13 #设置内容
14 text.set('同意嫁给你')
15
16 #设置复选框勾选与否的值
17 result = tkinter.IntVar()
18
19 #设置操作checkbutton的方法
20 def func():
21     print(result.get())
22
23 checkbutton = tkinter.Checkbutton(root,textvariable=text,variable=result,command=func,onvalue=66,offvalue=77)
24 checkbutton.pack()
25
26 root.mainloop()

tkinter组件:文本框

 1 import tkinter
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 #创建组件
 8 #用户名
 9 username = tkinter.Entry(root,width=50,bg='yellow',fg='red')
10 username.pack()
11
12 #密码
13 password = tkinter.Entry(root,show='*')
14 password.pack()
15
16 root.mainloop()

  1 """"""
  2 """
  3 复选框
  4 """
  5
  6 import tkinter
  7
  8 # 创建一个主窗口
  9 win = tkinter.Tk()
 10
 11 # 设置 标题
 12 win.title("python-13")
 13
 14 # 设置窗口大小和位置
 15 win.geometry("500x500+200+50")
 16
 17 def func():
 18     message = ""
 19     if res1.get():
 20         message += "张三\n"
 21     if res2.get():
 22         message += "李四\n"
 23     if res3.get():
 24         message += "王五\n"
 25
 26     text.delete(0.0,tkinter.END)
 27     text.insert(tkinter.INSERT,message)
 28
 29 res1 = tkinter.BooleanVar()
 30 check1 = tkinter.Checkbutton(win,text = "张三",variable = res1)
 31 check1.pack()
 32
 33 res2 = tkinter.BooleanVar()
 34 check2 = tkinter.Checkbutton(win,text = "李四",variable = res2)
 35 check2.pack()
 36
 37 res3 = tkinter.BooleanVar()
 38 check3 = tkinter.Checkbutton(win,text = "王五",variable = res3)
 39 check3.pack()
 40
 41 text = tkinter.Text(win,width = 50,height = 20)
 42 text.pack()
 43
 44 button = tkinter.Button(win,text = "submit",width = 10,height = 5,command = func)
 45 button.pack()
 46
 47 #启动主窗口
 48 win.mainloop()
 49
 50
 51
 52
 53
 54
 55 """"""
 56 """
 57 复选框
 58 """
 59
 60 import tkinter
 61
 62 # 创建一个主窗口
 63 win = tkinter.Tk()
 64
 65 # 设置 标题
 66 win.title("python-13")
 67
 68 # 设置窗口大小和位置
 69 win.geometry("500x500+200+50")
 70
 71 def func():
 72     message = ""
 73     if res1.get():
 74         message += "张三\n"
 75     if res2.get():
 76         message += "李四\n"
 77     if res3.get():
 78         message += "王五\n"
 79
 80     text.delete(0.0,tkinter.END)
 81     text.insert(tkinter.INSERT,message)
 82
 83 res1 = tkinter.BooleanVar()
 84 check1 = tkinter.Checkbutton(win,text = "张三",variable = res1)
 85 check1.pack()
 86
 87 res2 = tkinter.BooleanVar()
 88 check2 = tkinter.Checkbutton(win,text = "李四",variable = res2)
 89 check2.pack()
 90
 91 res3 = tkinter.BooleanVar()
 92 check3 = tkinter.Checkbutton(win,text = "王五",variable = res3)
 93 check3.pack()
 94
 95 text = tkinter.Text(win,width = 50,height = 20)
 96 text.pack()
 97
 98 button = tkinter.Button(win,text = "submit",width = 10,height = 5,command = func)
 99 button.pack()
100
101 #启动主窗口
102 win.mainloop()

tkinter组件:框架

 1 import tkinter
 2
 3 root = tkinter.Tk()
 4
 5 #大小
 6 root.geometry('500x500')
 7
 8 #创建框架1
 9 frame1 = tkinter.Frame(root,bg='red',width=500,height=100)
10 frame1.pack(side='top')
11
12 #框架1中横向摆放
13 btn1 = tkinter.Button(frame1,text='按钮')
14 btn1.pack(side='left',padx=20)
15
16 btn2 = tkinter.Button(frame1,text='按钮')
17 btn2.pack(side='left',padx=20)
18
19 btn3 = tkinter.Button(frame1,text='按钮')
20 btn3.pack(side='left',padx=20)
21
22 #创建框架2
23 frame2 = tkinter.Frame(root,bg='green',width=500,height=100)
24 frame2.pack(side='top')
25
26 btn4 = tkinter.Button(frame2,text='按钮')
27 btn4.pack(side='left',padx=20)
28
29 btn5 = tkinter.Button(frame2,text='按钮')
30 btn5.pack(side='left',padx=20)
31
32 btn6 = tkinter.Button(frame2,text='按钮')
33 btn6.pack(side='left',padx=20)
34 root.mainloop()

tkinter组件:labelframe框架

 1 import tkinter
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 #创建组件
 8 labelframe = tkinter.LabelFrame(root,text='四大美女')
 9 labelframe.pack(ipadx = 100)
10
11 #讲其他组件摆放到labelframe中
12 btn1 = tkinter.Button(labelframe,text='貂蝉')
13 btn1.pack()
14
15 btn1 = tkinter.Button(labelframe,text='杨玉环')
16 btn1.pack()
17
18 btn1 = tkinter.Button(labelframe,text='西施')
19 btn1.pack()
20
21 btn1 = tkinter.Button(labelframe,text='王昭君')
22 btn1.pack()
23
24 root.mainloop()

tkinter组件:标签

 1 import tkinter  # 标签
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 #创建组件
 8 label = tkinter.Label(root,text='这是一个标签',fg = 'red')
 9 label.pack()
10
11 root.mainloop()

tkinter组件:列表盒子(列表框)

 1 import tkinter # 列表盒子
 2
 3 root = tkinter.Tk()
 4
 5 #大小
 6 root.geometry('500x500')
 7
 8 #设置listbox的内容
 9 names = ('杨巅峰','鲍菊花','刘产','杜子腾','熊初墨')
10
11 #将数据转换为tkinter的字符串变量
12 students = tkinter.StringVar(value=names)
13
14 #创建组件
15 listbox = tkinter.Listbox(root,listvariable=students)
16 listbox.pack()
17
18 root.mainloop()

tkinter组件:菜单栏

 1 import tkinter #菜单
 2
 3 root = tkinter.Tk()
 4
 5 #大小
 6 root.geometry('500x500')
 7
 8 #1.创建主菜单
 9 bigmenu = tkinter.Menu(root)
10 #2.创建子菜单
11 filemenu = tkinter.Menu(bigmenu,tearoff=0)
12 #子菜单可以添加功能
13 filemenu.add_command(label='打开文件')
14 filemenu.add_command(label='保存文件')
15
16 filemenu.add_separator()
17 filemenu.add_command(label='另存为文件')
18 filemenu.add_command(label='导出文件')
19 filemenu.add_command(label='退出')
20
21 #3.将子菜单加入子菜单
22 bigmenu.add_cascade(label='文件',menu=filemenu)
23
24
25 #2.创建子菜单
26 editmenu = tkinter.Menu(bigmenu)
27 #3.将子菜单加入子菜单
28 bigmenu.add_cascade(label='编辑',menu=editmenu)
29
30 #4.将主菜单加入界面
31
32 root.config(menu=bigmenu)
33
34
35 root.mainloop()

tkinter组件:option菜单(列表菜单)

 1 import tkinter  #option菜单
 2
 3 root = tkinter.Tk()
 4
 5 #大小
 6 root.geometry('500x500')
 7
 8 #创建变量接收结果
 9 result = tkinter.StringVar()
10 result.set('请选择问题')
11 #创建组件
12 optionmenu = tkinter.OptionMenu(root,result,'你的初恋是谁','你的初中老师是谁','你的初吻给了谁')
13 optionmenu.pack()
14
15 root.mainloop()

tkinter组件:按钮菜单

 1 import tkinter  #按钮菜单
 2
 3 root = tkinter.Tk()
 4
 5 #大小
 6 root.geometry('500x500')
 7
 8 #创建组件
 9 menubutton = tkinter.Menubutton(root,text='性别')
10 menubutton.pack()
11
12 sex = tkinter.StringVar()
13 #添加选项
14 menu = tkinter.Menu(menubutton,tearoff=0)
15 menu.add_radiobutton(label='男',variable=sex)
16 menu.add_radiobutton(label='女',variable=sex)
17
18 #将菜单配置到组件
19 menubutton.config(menu=menu)
20 root.mainloop()

tkinter组件:划分窗口

 1 import tkinter  # 划分窗口
 2
 3 root = tkinter.Tk()
 4
 5 #大小
 6 root.geometry('500x500')
 7
 8 #创建组件  orient = 'vertical'
 9 panedwindow = tkinter.PanedWindow(root,orient = 'horizontal')
10
11 #添加组件
12 btn1 = tkinter.Button(panedwindow,text='按钮1112222')
13 btn2 = tkinter.Button(panedwindow,text='按钮2')
14
15 panedwindow.add(btn1)
16 panedwindow.add(btn2)
17
18 panedwindow.pack(fill = 'both',expand='yes')
19
20 root.mainloop()

tkinter组件:单选框

 1 import tkinter
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 # 创建组件
 8 sex = tkinter.StringVar()
 9
10 radio1 = tkinter.Radiobutton(root,text='男',variable=sex,value='man')
11 radio1.pack()
12
13 radio2 = tkinter.Radiobutton(root,text='女',variable=sex,value='woman')
14 radio2.pack()
15
16 root.mainloop()

tkinter组件:滚动条1

 1 import tkinter  #进度条
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 #创建组件
 8 scale = tkinter.Scale(root,orient='horizontal',from_=50,to= 80,resolution=0.5)
 9 scale.pack()
10
11 root.mainloop()

tkinter组件:滚动条2

 1 import tkinter #滚动条
 2
 3 root = tkinter.Tk()
 4
 5 #大小
 6 root.geometry('500x500')
 7
 8 #简单的滚动条
 9 scroll = tkinter.Scrollbar(root)
10 scroll.pack(fill = 'y', side = 'right')
11
12 root.mainloop()

tkinter组件:限定类型输入框

 1 import tkinter  # 限定类型的输入框
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 spinbox = tkinter.Spinbox(root,from_ = 0, to=120,increment = 0.5)
 8 spinbox.pack()
 9
10 root.mainloop()

tkinter组件:多行文本框

 1 import tkinter # 多行文本输入框
 2
 3 root = tkinter.Tk()
 4
 5 #大小
 6 root.geometry('500x500')
 7
 8 text = tkinter.Text(root,width = 50,height= 10)
 9 text.pack()
10
11 #设置值
12 text.insert('0.0','你好啊,小姐姐')
13 root.mainloop()

tkinter组件:弹出新窗口

 1 import tkinter
 2 root = tkinter.Tk()
 3
 4 #大小
 5 root.geometry('500x500')
 6
 7 #聊天函数
 8
 9 def talk():
10     #新窗口
11     newroot = tkinter.Toplevel()
12
13 # 弹出新窗口
14 btn = tkinter.Button(root,text='点击开始对话',command = talk)
15 btn.pack()
16
17 root.mainloop()

tkinter组件:消息对话框

 1 #messagebox          消息对话框
 2 import tkinter
 3 #导入消息对话框子模块
 4 import tkinter.messagebox
 5
 6 #创建主窗口
 7 root = tkinter.Tk()
 8 #设置大小
 9 root.minsize(300,300)
10
11 '''
12 #声明函数
13 def okcancel():
14     #弹出对话框
15     result = tkinter.messagebox.askokcancel(title = 'okcancel',message = '先生,反已经做好了,要吃饭码?')
16     print(result)
17
18
19 #添加按钮
20 btn1 = tkinter.Button(root,text = 'okcancel',command = okcancel)
21 btn1.pack()
22
23
24 #声明函数
25 def question():
26     # 弹出对话框
27     result = tkinter.messagebox.askquestion(title = 'question',message = '你是男人吗?')
28     print(result)
29 #添加按钮
30 btn2 = tkinter.Button(root,text = 'question',command = question)
31 btn2.pack()
32
33
34 #声明函数
35 def retrycancel():
36     # 弹出对话框
37     result = tkinter.messagebox.askretrycancel(title = 'retrycancel',message = '女生拒绝了你,你要继续追码??')
38     print(result)
39 #添加按钮
40 btn3 = tkinter.Button(root,text = 'retrycancel',command = retrycancel)
41 btn3.pack()
42
43 #声明函数
44 def yesno():
45     # 弹出对话框
46     result = tkinter.messagebox.askyesno(title = 'yesno',message = '你喜欢日本人吗?')
47     print(result)
48 #添加按钮
49 btn4 = tkinter.Button(root,text = 'yesno',command = yesno)
50 btn4.pack()
51
52
53
54 #声明函数
55 def error():
56     # 弹出对话框
57     tkinter.messagebox.showerror(title = '出错了',message = '你的年龄不符合要求!')
58 #添加按钮
59 btn5 = tkinter.Button(root,text = 'error',command = error)
60 btn5.pack()
61
62
63 #声明函数
64 def warning():
65     # 弹出对话框
66     tkinter.messagebox.showwarning(title = '警告',message = '18岁以下禁止进入')
67 #添加按钮
68 btn6 = tkinter.Button(root,text = 'warning',command = warning)
69 btn6.pack()
70 '''
71
72 #声明函数
73 def info():
74     # 弹出对话框
75     tkinter.messagebox.showinfo(title = '信息提示',message = '1区王者已上线!')
76 #添加按钮
77 btn7 = tkinter.Button(root,text = 'info',command = info)
78 btn7.pack()
79
80 #加入消息循环
81 root.mainloop()

tkinter组件:消息输出框

 1 #导入tkinter
 2 import tkinter
 3 #导入子模块
 4 import tkinter.simpledialog
 5
 6 #创建主界面
 7 root = tkinter.Tk()
 8 #设置大小
 9 root.minsize(300,300)
10
11 '''
12 def askname():
13     result = tkinter.simpledialog.askstring(title = '获取信息',prompt = '请输入用户名',initialvalue = '匿名')
14     print(result)
15
16 #添加按钮
17 btn1 = tkinter.Button(root,text = '获取用户名',command = askname)
18 btn1.pack()
19
20
21 def askage():
22     result = tkinter.simpledialog.askinteger(title = '获取信息',prompt = '请输入年龄',initialvalue = 18)
23     print(result)
24
25 #添加按钮
26 btn2 = tkinter.Button(root,text = '获取年龄',command = askage)
27 btn2.pack()
28 '''
29
30 def askheight():
31     result = tkinter.simpledialog.askfloat(title = '获取信息',prompt = '请输入身高(单位:米)',initialvalue = 0)
32     print(result)
33
34 #添加按钮
35 btn3 = tkinter.Button(root,text = '获取身高',command = askheight)
36 btn3.pack()
37
38 root.mainloop()

tkinter组件:文件选择框

  1 #导入tkinter
  2 import tkinter
  3 #导入子模块
  4 import tkinter.filedialog
  5
  6 #help(tkinter.filedialog)
  7 '''
  8     askdirectory(**options)
  9         获取一个文件夹的路径
 10
 11     askopenfile(mode='r', **options)
 12        打开文件获取单个文件指针,具有open()的作用
 13
 14     askopenfiles(mode='r', **options)
 15         打开文件获取多个文件指针,具有open()的作用
 16
 17     askopenfilename(**options)
 18         选择单个文件,获取其路径
 19
 20     askopenfilenames(**options)
 21         选择多个文件,获取其路径
 22
 23         Returns a list of filenames or empty list if
 24         cancel button selected
 25
 26     asksaveasfile(mode='w', **options)
 27         Ask for a filename to save as, and returned the opened file
 28
 29     asksaveasfilename(**options)
 30         选择保存文件的路径
 31
 32
 33 '''
 34
 35
 36 #主界面
 37 root = tkinter.Tk()
 38 #设置大小
 39 root.minsize(300,300)
 40
 41
 42 '''
 43 #定义函数
 44 def filename():
 45     path = tkinter.filedialog.askopenfilename()
 46     print(path)
 47
 48 #添加按钮触发
 49 btn1 = tkinter.Button(root,text = 'filename',command = filename)
 50 btn1.pack()
 51 '''
 52
 53 '''
 54 #定义函数
 55 def filenames():
 56     paths = tkinter.filedialog.askopenfilenames()
 57     print(paths)
 58
 59 #添加按钮触发
 60 btn2 = tkinter.Button(root,text = 'filenames',command = filenames)
 61 btn2.pack()
 62 '''
 63
 64 '''
 65 #定义函数
 66 def file():
 67     fp = tkinter.filedialog.askopenfile(mode = 'r')
 68     print(fp)
 69
 70 #添加按钮触发
 71 btn3 = tkinter.Button(root,text = 'file',command = file)
 72 btn3.pack()
 73 '''
 74
 75 '''
 76 #定义函数
 77 def dir():
 78     path = tkinter.filedialog.askdirectory()
 79     print(path)
 80
 81 #添加按钮触发
 82 btn4 = tkinter.Button(root,text = 'dir',command = dir)
 83 btn4.pack()
 84 '''
 85
 86 '''
 87 #定义函数
 88 def saveas():
 89     path = tkinter.filedialog.asksaveasfilename()
 90     print(path)
 91
 92 #添加按钮触发
 93 btn5 = tkinter.Button(root,text = 'saveas',command = saveas)
 94 btn5.pack()
 95 '''
 96
 97 #参数设定
 98 #定义函数
 99 def filename():
100     path = tkinter.filedialog.askopenfilename(initialdir = 'c:/',initialfile = 'abc.exe',title = '打开你心意的文件',filetypes = (('可执行文件','*.exe'),('python file','*.py'),('所有文件','*.*')))
101     print(path)
102
103 #添加按钮触发
104 btn1 = tkinter.Button(root,text = 'filename',command = filename)
105 btn1.pack()
106
107 root.mainloop()

tkinter组件:颜色组件

 1 #导入模块
 2 import tkinter
 3 #导入子模块
 4 import tkinter.colorchooser
 5
 6 #主界面
 7 root = tkinter.Tk()
 8 root.minsize(300,300)
 9
10 #函数
11 def color():
12     result = tkinter.colorchooser.askcolor(color = '#ff9900')
13     print(result)
14     #设置界面背景颜色
15     root['bg'] = result[1]
16
17 #添加按钮
18 btn = tkinter.Button(root,text = '选择颜色',command = color)
19 btn.pack()
20
21
22
23 root.mainloop()

tkinter组件:键盘-鼠标 事件

  1 #事件学习:
  2 #1.事件绑定函数
  3 #2.事件类型
  4 #3.事件对象
  5
  6 '''
  7 以按钮为例:
  8     1.为按钮添加一个【点击时候】的操作   ->事件类型
  9     2.使用按钮的【command参数指定类函数】 ->事件绑定函数
 10     3.按钮操作过程中的信息                ->事件对象
 11 '''
 12
 13 #1.事件绑定函数(3个)
 14 '''
 15     1.组件.bind('事件类型',事件函数)
 16         为一个组件绑定一个操作
 17     2.组件.bind_class('组件类型','事件类型',事件函数)
 18         为一类组件绑定一个操作
 19         组件类型就是创建组件的方法名  例如按钮组件:Button
 20     3.组件.bind_all('事件类型',事件函数)
 21         为所有组件绑定一个操作(所有操作都会当作对主界面的操作)
 22 '''
 23
 24 #2.事件类型
 25 '''
 26 鼠标事件类型
 27     <Button-1>          按下了鼠标左键        <ButtonPress-1>
 28     <Button-2>          按下了鼠标中键        <ButtonPress-2>
 29     <Button-3>          按下了鼠标右键        <ButtonPress-3>
 30     <Enter>             鼠标进入组件区域
 31     <Leave>             鼠标离开组件区域
 32     <ButtonRelease-1>   释放了鼠标左键
 33     <ButtonRelease-2>   释放了鼠标中键
 34     <ButtonRelease-3>   释放了鼠标右键
 35     <B1-Moion>          按住鼠标左键移动
 36     <B2-Moion>          按住鼠标中键移动
 37     <B3-Moion>          按住鼠标右键移动
 38     <Double-Button-1>   双击鼠标左键
 39     <Double-Button-2>   双击鼠标中键
 40     <Double-Button-3>   双击鼠标右键
 41     <MouseWheel>        滚动鼠标滚轮
 42 键盘事件类型
 43     <KeyPress>                 表示任何键盘按下
 44     <KeyPress-A>               表示按下键盘A键    A可以设置为其他的按键
 45     <Alt-KeyPress-A>           表示同时按下Alt和A键    A可以设置为其他的按键
 46     <Control-KeyPress-A>       表示同时按下Ctrl和A键    A可以设置为其他的按键
 47     <Shift-KeyPress-A>         表示同时按下Shift和A键    A可以设置为其他的按键
 48     <Double-KeyPress-A>        表示双击键盘A键    A可以设置为其他的按键
 49     <Lock-KeyPress-A>          表示开启大写之后键盘A键    A可以设置为其他的按键
 50     <Alt-Control-KeyPress-A>   表示同时按下alt+Ctrl和A键    A可以设置为其他的按键
 51
 52 注意:键盘事件除了entry和text组件其他组件的事件最好绑定在主界面上
 53 窗口和组件相关事件类型
 54     Activate         当中组件由不可以用变为可用时  针对于state的变值
 55     Deactivate       当组件由可用变为不可用时触发
 56     Configure        当组件大小发生变化时触发
 57     Destory          当组件销毁时触发
 58     FocusIn          当组件获取焦点时触发 针对于Entry和Text有效
 59     Map              当组件由隐藏变为显示时触发
 60     UnMap            当组件由显示变为隐藏时触发
 61     Perproty         当窗口属性发生变化时触发
 62
 63 '''
 64 #3.事件对象
 65 '''
 66     x,y              当前触发事件时鼠标相对触发事件的组件的坐标值
 67     x_root,y_root    当前触发事件时鼠标相对于屏幕的坐标值
 68     char             获取当前键盘事件时按下的键对应的字符
 69     keycode          获取当前键盘事件时按下的键对应的的ascii码
 70     type             获取事件的类型
 71     num              获取鼠标按键类型  123 左中右
 72     widget           触发事件的组件
 73     width/height     组件改变之后的大小和configure()相关
 74
 75 '''
 76
 77 #事件绑定的案例1:
 78 import tkinter
 79
 80 root = tkinter.Tk()
 81 root.minsize(300,200)
 82
 83 #单行文本
 84 entry = tkinter.Entry(root)
 85 entry.pack()
 86 #事件函数
 87 def changered(eventobj):
 88     eventobj.widget['bg'] = 'red'
 89
 90 def changegreen(eventobj):
 91     eventobj.widget['bg'] = 'green'
 92
 93 #事件绑定
 94 entry.bind('<FocusIn>',changered) #entry获取焦点组件 变红
 95 entry.bind('<FocusOut>',changegreen)#entry失去焦点组件 变绿
 96
 97 #注意:通过绑定函数操作,对应的事件函数,必须有形参接受事件对象。
 98 #      事件函数必须在绑定之间定义
 99
100 entry2 = tkinter.Entry(root)
101 entry2.pack()
102
103 #键盘事件
104
105 #变红色
106 def changer(eventobj):
107     print('#@@@@@@@@@@@@@@')
108     eventobj.widget['bg'] = 'red'
109
110 #变绿色
111 def changeg(eventobj):
112     print('#@@@@@@@@@@@@@@')
113     eventobj.widget['bg'] = 'green'
114
115 root.bind('<Control-KeyPress-r>',changer)
116 root.bind('<Control-KeyPress-R>',changer)
117
118 root.bind('<Control-KeyPress-g>',changeg)
119 root.bind('<Control-KeyPress-G>',changeg)
120
121 root.mainloop()

tkinter组件:鼠标事件1

 1 import tkinter
 2
 3 root = tkinter.Tk()
 4 root.minsize(300,300)
 5
 6 #按钮1
 7 btn1 = tkinter.Button(root,text = '1')
 8 btn1.place(x = 20,y = 20,width = 40,height = 40)
 9
10 #按钮1
11 btn2 = tkinter.Button(root,text = '2')
12 btn2.place(x = 80,y = 20,width = 40,height = 40)
13
14 #按钮1
15 btn3 = tkinter.Button(root,text = '3')
16 btn3.place(x = 140,y = 20,width = 40,height = 40)
17
18 #按钮1
19 btn4 = tkinter.Button(root,text = '4')
20 btn4.place(x = 20,y = 80,width = 40,height = 40)
21
22 #按钮1
23 btn5 = tkinter.Button(root,text = '5')
24 btn5.place(x = 80,y = 80,width = 40,height = 40)
25
26 #按钮6
27 btn6 = tkinter.Button(root,text = '6')
28 btn6.place(x = 140,y = 80,width = 40,height = 40)
29
30 def changebg(e):
31     e.widget['bg'] = 'green'
32
33 #绑定按钮鼠标进入有事件
34 btn1.bind_class('Button','<Enter>',changebg)
35
36
37 def changebg(e):
38     e.widget['bg'] = 'yellow'
39
40 #绑定按钮鼠标离开有事件
41 btn1.bind_class('Button','<Leave>',changebg)
42
43 root.mainloop()

tkinter组件:鼠标事件2

 1 import tkinter
 2
 3 root = tkinter.Tk()
 4 root.minsize(300,300)
 5
 6 #按钮
 7 btn = tkinter.Button(root,text = '##########')
 8 btn.pack()
 9
10 #输入框
11 entry = tkinter.Entry(root)
12 entry.pack()
13
14 #文本
15 text = tkinter.Text(root,width = 20,height = 5)
16 text.pack()
17
18 #函数
19 def changeentry(e):
20     entry['bg'] = 'cyan'
21
22 #事件绑定
23 btn.bind_all('<Button-1>',changeentry)
24
25 root.mainloop()

转载于:https://www.cnblogs.com/lws865/p/10946894.html

gui - tkinter 开发相关推荐

  1. 【Python之GUI开发案例】用Python的tkinter开发聚合翻译神器

    目录 一.效果演示 二.代码分解 三.获取python源码 一.效果演示 我用python的tkinter库开发了一个聚合翻译器,实现一键同时获取5个翻译工具的结果,包括: 有道翻译.百度翻译.必应翻 ...

  2. Python量化交易平台开发教程系列7-顶层GUI界面开发(1)

    原创文章,转载请注明出处:用Python的交易员 前言 终于有时间来写第一篇顶层GUI界面开发相关的教程了,之前实在是事情太多,跟各位读者抱个歉. 整合底层接口的各项功能到中层引擎中后,当我们开发顶层 ...

  3. Python GUI界面开发软件综述

    参考致谢: 28款Python GUI开发框架开源软件 https://www.cnblogs.com/muziyunxuan/archive/2017/12/26/8117875.html Py之G ...

  4. 使用tkinter开发图形界面显示图片(Win10,Python)

    Tkinter(也叫Tk接⼝)是Tk图形⽤户界⾯⼯具包标准的Python接⼝.Tk是⼀个轻量级的跨平台图形⽤户界⾯(GUI)开发⼯具. Tkinter是Python自带的官方标准库,安装Python之 ...

  5. php做gui,php7 图形用户界面GUI如何开发

    php7 图形用户界面GUI如何开发?这篇文章主要介绍了php7 图形用户界面GUI 开发,结合实例形式分析了PHP7基于php_ui扩展实现的图形用户界面GUI相关操作技巧,感兴趣的用户就来一聚教程 ...

  6. python视窗版_Python GUI tkinter窗口视窗学习3

    Python GUI tkinter窗口视窗学习3 # test9 import tkinter as tk window = tk.Tk() window.title('my test9') win ...

  7. 《Abaqus GUI程序开发指南(Python语言)》——2.5 动态类型简介

    本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第2章,第2.5节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...

  8. 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...

    本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第1章,第1.1节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...

  9. python tkinter_Python+tkinter开发一个电子宠物(2 按钮)

    前:Python+tkinter开发一个电子宠物(1 开始)​zhuanlan.zhihu.com 画完了素材就开始写代码吧! 窗口 import 效果: 很好,窗口出来了 显示宠物 import 效 ...

最新文章

  1. 计算机应用发展方向展望,我国计算机应用现状及展望.doc
  2. 计算机网络考试试题库-期末考试题库含答案
  3. python爬取新闻发送微信_如何利用 Python 爬虫实现给微信群发新闻早报?(详细)...
  4. 前端特效demo | 值得收藏的6个 HTML5 Canvas 实用案例 1
  5. 转-squid介绍及其简单配置
  6. 【WPF】 免费图表控件的比较 (OxyPlot,LiveChart,ScottPlot,MsChart)
  7. html5 调用歌词播放器,如何用h5+js实现音乐歌词同步播放器
  8. 如何将图片批量压缩大小?怎样一次性压缩多张图片?
  9. 顶级域名、一级域名、二级域名、三级域名的区别
  10. 搞定从mac把超过4G的文件拷入U盘
  11. python绘图矩阵散点图_Python数据可视化:用Seaborn绘制高端玩家版散点图
  12. vi/vim保存报错:E37: No write since last change E162: No write since last change for buffer “[文件名称]“
  13. 《Cocos Creator游戏实战》实现微信小游戏排行榜
  14. pptpd mysql_安装pptpd脚本
  15. matlab矩阵转入tecplot,[转载]tecplot编辑自己想要的变量
  16. el-input输入字母转化大写字母
  17. (图文)自己组建自己迷你linux系统
  18. 服务器型号E52680,八核心Intel Xeon E5-2680性能大爆光
  19. [Unity3D]Unity官方认证考试模拟题
  20. 计算机设置了桌面显示为什么没有,电脑桌面没有图标怎么回事?如何解决?

热门文章

  1. Analysis of Web.xml in Hello1 project
  2. Springboot@Configuration和@Bean详解
  3. 洛谷 P4706 取石子 解题报告
  4. 19-spring学习-springMVC环境配置
  5. gitlab与jenkins的自动化部署(通过webhook与ansible)
  6. python学习笔记七
  7. 公路建厂最短路径问题
  8. 有用的Python资料
  9. 《101 Windows Phone 7 Apps》读书笔记-Silly Eye
  10. J2ME程序开发新手入门九大要点