配色: 字号:
《Python程序设计》第7章 图形用户界面
2023-05-25 | 阅:  转:  |  分享 
  
口令:RAPID708第7章 图形用户界面了解Tkinter工具包的作用。掌握Tkinter常用组件的使用。“Tkinter”是Python
的标准库,它对“TCL”或“TK”(工具控制语言)进一步封装,和“tkinter.ttk”和“tkinter.tix”共同提供强大
的跨平台GUI编程的功能,IDLE就是使用“Tkinter”进行开发的。“Tkinter”的安装比较简单,安装“Python”的时
候就可以选择安装。测试“tkinter”安装后默认自带的案例:>>> import tkinter>>> tkinter._tes
t()编写“Tkinter”应用的主体框架具体步骤如下.:定义Windowns窗口及其属性。填写窗口内容。执行“window.ma
inloop”激活窗口。import tkinter as tkf1=tk.Tk()f1.wm_title("Python GUI
窗口显示")tk.mainloop()标签是“Tkinter”模块中最简单的组件,主要功能是显示提示信息。import tkin
ter as tkf1=tk.Tk()f1.wm_title("Python GUI 窗口显示")l1=tk.Label(f1,t
ext="欢迎学习Python!",background="yellow")l2=tk.Label(f1,text="Python
使我快乐!",background="green")l1.pack()l2.pack()tk.mainloop()按钮是非常重要的
组件,通过单击或多次点击时可以执行相对应的功能。import tkinter as tkf1=tk.Tk()f1.wm_title
("Python GUI 窗口显示")b1=tk.Button(f1,text="按钮1")b1["width"]=20b1["h
eight"]=10b1["background"]="yellow"b1.pack()tk.mainloop()“command
”属性import tkinter as tkdef event1(): global f1,num num+=1
l1=tk.Label(f1,text="点击按钮"+str(num)+"次!",background="red") l
1.pack()num=0 f1=tk.Tk()f1.wm_title("Python GUI 窗口显示")b1=tk.Butt
on(f1,text="按钮1",command=event1)b1.pack()tk.mainloop()“bind( )”方法
import tkinter as tkdef event1(event): global f1,num num+=1
l1=tk.Label(f1,text="点击按钮"+str(num)+"次!",background="yellow")
l1.pack()num=0 f1=tk.Tk()f1.wm_title("Python GUI 窗口显示")b1=tk
.Button(f1,text="按钮1")b1.bind("",event1)b1.pack()tk.mai
nloop()“pack”布局会默认选择合适的位置和大小,当有多个组件时会从上往下依次排列。“pack( )”函数常用参数:imp
ort tkinter as tkf1=tk.Tk()tk.Label(f1, text=''上'').pack(side=''top''
)tk.Label(f1, text=''下'').pack(side=''bottom'')tk.Label(f1, text=''左'')
.pack(side=''left'')tk.Label(f1, text=''右'').pack(side=''right'')f1.mai
nloop()“grid”布局是网格布局,可以将界面分为几行几列,然后在网格中添加对应组件。网格布局的相对位置并不会随窗体大小不同
而发生改变。“grid( )”函数常用参数:import tkinter as tkf1=tk.Tk()l1=tk.Label(f
1,text="账号:9527").grid(row=0,sticky="w")l2=tk.Label(f1,text="密码:9
527").grid(row=1,sticky="w")b1=tk.Button(f1,text="登陆").grid(row=2
,sticky="w")tk.mainloop()“place”布局给定固定的坐标,然后添加组件。这种方式操作复杂,不能随意放大或
缩小窗口,否则就会导致布局混乱,所以使用较少。import tkinter as tkf1=tk.Tk()l1=tk.Label(
f1,text="Hello").place(x=0,y=0)l1=tk.Label(f1,text="Python").plac
e(x=20,y=20)f1.mainloop()“Tkinter”中事件处理使用 “bind”函数。“bind”函数使用语法如下
:组件对象.bind(“events”,fun)“events”:事件类型。“fun”:回调函数(事件处理函数名)。常用事件类型如
下:1.鼠标事件:其中的取值为1、2或3。x为1时:鼠标左击事件。x为2时:鼠标中击事件。x为3时:鼠标右击事
件。2.键盘事件:X可以为键盘上任意键,直接点击即可触发事件。:X可以为键盘上F系列的任意键,直接
点击即可触发事件。:X可以为键盘上任意键,“Ctrl+x”即可触发事件。输入框的功能是获取用户输入的数据信息
。from tkinter import def reg(): myAccount = a_entry.get() # 获
取?户输?的?户名 myPassword = p_entry.get() # 获取?户输?的密码 a_len = le
n(myAccount) # 获取输?的?户名? p_len = len(myPassword) # 获取输?的密码?
if myAccount == "123" and myPassword == "123": msg_label[
"text"] = "登录成功" elif myAccount == "123" and myPassword!= "1
23": msg_label["text"] = "密码错误" a_entry.delete(0, a
_len) #清除显示 p_entry.delete(0, p_len) #清除显示 elif myAccou
nt != "123" and myPassword== "123": msg_label["text"] = "?
户名错误" a_entry.delete(0, a_len) p_entry.delete(0, p_
len) else : msg_label["text"] = "?户名、密码错误" a_e
ntry.delete(0, a_len) p_entry.delete(0, p_len)root = Tk()
# ?户名a_label = Label(root, text = "?户名: ")a_label.grid(row = 0, c
olumn = 0, sticky = W)a_entry = Entry(root)a_entry.grid(row = 0,
column = 1, sticky = E)# 密码p_label = Label(root, text = "密码: ")p_
label.grid(row = 1, column = 0, sticky = W)p_entry = Entry(root)p
_entry["show"] = "" # 密码显示为 p_entry.grid(row = 1, column = 1, s
ticky = E)# 登录按钮btn = Button(root, text = "登录", command = reg)btn
.grid(row = 2, column = 1, sticky = E)# 提示信息msg_label = Label(roo
t, text = "")msg_label.grid(row = 3)root.mainloop()文本框实质上就是一个文本。f
rom tkinter import f1=Tk()t1=Text(f1,width=30,height=20)t1.pack(
)f1.mainloop()顶层菜单一般包含文件、编辑、查看、窗口、帮助等下拉菜单,使用“Menu”类来自定义菜单,使用“add_
command( )”方法来添加菜单项。from tkinter import f1=Tk()m1=Menu(f1)for i
in ["文件","开始","插入","设计"]: m1.add_command(label=i)f1["menu"]=m1
f1.mainloop()子菜单负责向顶级菜单中添加内容。from tkinter import f1=Tk()m1=Menu(
f1)fm1=Menu(m1)for i in ["信息","新建","打开","保存"]: fm1.add_command
(label=i)m1.add_cascade(label="文件",menu=fm1)f1["menu"]=m1f1.mainl
oop()弹出菜单也叫“右键菜单”,鼠标单击右键时触发而产生的菜单。from tkinter import def events
(): global f1 Label(f1,text="已点击共享!").pack()def m_event(eve
nt): global m1 m1.post(event.x_root,event.y_root)f1=Tk()m1=
Menu(f1)fm1=Menu(m1)for i in ["信息","新建","打开","保存"]: fm1.add_co
mmand(label=i)fm1.add_command(label="共享",command=events)m1.add_ca
scade(label="文件",menu=fm1)f1.bind("",m_event)f1["menu"]
=m1f1.mainloop()单选菜单和复选菜单的使用类似于单选按钮和复选按钮,单选菜单使用 “add_radiobutton(
)”函数,每次只能选定一个菜单项,复选菜单使用 “add_checkbutton( )”函数,可以同时选定多个多个菜单项,这两种
菜单一旦被选定在菜单项前面就会出现“?” 对号标记。from tkinter import f1=Tk()m1=Menu(f1)
fm1=Menu(m1)for i in ["创建","打开","保存","打印"]: fm1.add_radiobutto
n(label=i) #单选菜单fm1.add_separator() #添加分割线for j in ["关闭","重启"]
: fm1.add_checkbutton(label=j) #复选菜单m1.add_cascade(label="文件",
menu=fm1)f1["menu"]=m1f1.mainloop()单选按钮和复选按钮相当是把单选菜单和复选菜单变为按钮,单选按
钮和复选按钮分别使用“Radiobutton( )”函数和“Checkbutton( )”。from tkinter import
def fun1(): global l1,cou1 if cou1 % 2 == 0: cou1
+= 1 l1["text"] = "复选按钮1被选中" else: cou1 += 1
l1["text"] = "复选按钮1被取消"def fun2(): global l1,cou2 if co
u2 % 2 == 0: cou2 += 1 l1["text"] = "复选按钮2被选中" e
lse: cou2 += 1 l1["text"] = "复选按钮2被取消"cou1 = 0cou2
= 0f1 = Tk()c1 = Checkbutton(f1, text = "复选按钮1", command = fun1)c
1.pack()c2 = Checkbutton(f1, text = "复选按钮2", command = fun2)c2.pa
ck()l1 = Label(f1, text = "")l1.pack()f1.mainloop()“Tkinter”模块中提供
了许多实用的对话框,用来显示文本消息、提示警告信息或错误信息等。from tkinter.dialog import from
tkinter import def events(): d = Dialog(None, title = "Python
调查", text = "喜欢学习Python吗? ", bitmap = DIALOG_ICON, default = 0, strings = ("喜欢", "很喜欢", "?常喜欢")) print(d.num)b1= Button(None, text = "Python调查", command = events)b1.pack()b2 = Button(None, text = "关闭", command = b1.quit)b2.pack()b1.mainloop()消息框的主要作用是向用户传递提示信息,“Tkinter”模块中使用消息框需要导入“messagebox.py”文件from tkinter.messagebox import showinfo(title = "Python学习", message = "人生苦短,我学Python!")谢谢!
献花(0)
+1
(本文系大高老师首藏)