gui - tkinter 开发

Posted lws865

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gui - tkinter 开发相关的知识,希望对你有一定的参考价值。

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 nw
justify:设置换行之后的对齐方式
 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()

 

以上是关于gui - tkinter 开发的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter Gui 中的课程菜单

Python GUI:tkinter

Python GUI:tkinter

用Tkinter打造GUI开发工具(49)在Tkinter窗口上动态显示matplotlib.pyplot图形

用Tkinter打造GUI开发工具(49)在Tkinter窗口上动态显示matplotlib.pyplot图形

关于tkinter