Python的GUI编程(TK)

Python的GUI编程(TK),第1张

概述TK在大多数 Unix平台、Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口。可实现Python的GUI编程。Tkinter模块("Tk 接口")是python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。(百度百科) 一般的环境里直接import tkinter即可使用,但Ubuntu里既然没有,所以要自己安装,因为笔者Ubuntu系统里默认有python2,python3是自己后来安装的,查阅资料得到结果是tkinter安装成功后,并没有和python3成功链接,需要重新安装python3才可以。安装:sudo apt-get install python-tk安装:sudo apt install tk-dev重新安装python3环境:进入python版本解压目录:cd python3.7命令:./configure命令:make命令:sudo make install 显示图片需安装pillow库 :指定版本安装:sudo pip3 install Pillow==4.3.0  下面先用一个小爬虫程序入门python的tkinter编程: 效果: 程序:1 from tkinter import *2 from tkinter import messagebox3 from PIL import Image,ImageTk4 import re #正则表达式5 import requests6 def butonck():7 #改变lab颜色8 labelx["fg"]="green"9 #获取输入框值10 textx=entryx.get()11 #去掉字符串前后空格12 textx=textx.strip()13 if textx=='':14 #d出提示框15 messagebox.showinfo("东东提示","输入不可为空")16 else:17 #字典数据18 datax={19 "word":textx,20 "sizes":60,21 "fonts":"lfc.ttf",22 "fontcolor":"#000000"23 }24 rx=requests.post("http://www.uustv.com/",data=datax)25 rx.encoding="utf-8"26 htmlx=rx.text #网站源码27 zz='<div class="tu">.*?<img src="(.*?)"/></div>'#括号里的.*?表示要取的值28 #取图片地址29 imagex=re.findall(zz,htmlx)30 #取图片数据31 imagedatax=requests.get("http://www.uustv.com/"+imagex[0]).content32 #打开文件33 ff=open('{}.gif'.format(textx),"wb")34 #写图片数据35 ff.write(imagedatax)36 #37 bmx=ImageTk.PhotoImage(file='{}.gif'.format(textx))38 lab2=Label(rview,image=bmx)39 lab2.bm=bmx40 lab2.grid(row=2,columnspan=2)41 #创建窗口42 rview=Tk()43 #标题44 rview.title("东小东标题党")45 #窗口大小 长高用小写x隔开46 #rview.geometry("600x300")47 #窗口基于屏幕的坐标 +x轴+y轴48 rview.geometry("+500+200")49 #创建lab标签50 labelx=Label(rview,text="签名",fg="red",font=("宋体",30))51 #显示lab标签 网格布局 sticky=W #左对齐 E为右对齐 默认为中间对齐52 labelx.grid(row=0,column=0)53 #创建输入框54 entryx=Entry(rview,font=("宋体",20))55 #显示输入框56 entryx.grid(row=0,column=1)57 #创建按钮58 buttonx=Button(rview,text="确定",font=("宋体",30),command=butonck)59 #显示按钮60 buttonx.grid(row=1,column=2)61 #显示后改变按钮属性62 #buttonx["width"]=2636465 #消息循环 显示窗口66 rview.mainloop()其他补充: 按钮标签:设置是否可点击buttonx.config(state=DISABLED)//不可按 NORMAL为正常改变文字:buttonx["text"]="改变文字" Lab标签:改变文字内容:labx.config(text="改变文字")改变文字样式:labx.config(font=("xx",100,"bold")) #字体,大小,加粗 grid为表格布局lab2.grid(row=2,columnspan=2)#columnspan为跨两列,对应 rowspan为跨行sticky=“ew”#横向占满填充 其它属性:padx和pady=10 #设置边距bg为背景色;fg为前景色布局默认:将页面尺寸去掉,则自动根据内容大小动态包裹鼠标移动到此次改变箭头样式:标签.config(cursor="gumby")对齐方式:anchor=W //W左E右浮雕效果:relief=SUNKEN pack布局:标签.pack()默认为上居中随窗口移动不变标签.pack(fill=X)#横向大小填充,内容居中标签.pack(fill=BOTH,expand=True)#纵向大小填充,内容居中标签.pack(fill=BOTH,expand=True)#填充全部,内容居中标签.pack(side=LEFT) #全部向左靠 加载一张图片:imgx = PhotoImage(file='dong.gif')label = Label(image=imgx, width=20,height=20)label.image = imgxlabel.grid(row=1, column=1, sticky=W + E + N + S, padx=10, pady=10) #sticky=W + E + N + S 表示填充控件 可绑定的事件:单击鼠标左键:<Button-1> #其中1为鼠标左键,2为鼠标右键,3为鼠标中键左键移动:<B1-Motion>左键释放:<ButtonRelease-1>双击左键:<Double-Button-1>进入:<Enter>离开:<Leave>获得光标:<FocusIn>光标离开:<FoucusOut>回车键:<Return>(F1,F2,F3,Delete…)按任意键:<Key> 事件处理函数形参可用值:输出点击的坐标:event.x event.y        如:<Button-1>事件输出键盘按键对应的符号:event.char     如:<Key>事件 获取鼠标点击坐标实现: 关闭程序是出现d出提示框:  子容器:1 from tkinter import *2 #创建窗口3 rview=Tk()4 #标题5 rview.title("东小东")6 #窗口基于屏幕的坐标 +x轴+y轴7 rview.geometry("+500+200")8 #创建lab标签9 labelx=Label(rview,text="父容器Lab",font=("宋体",30))10 #显示lab标签 网格布局 sticky=W #左对齐 E为右对齐 默认为中间对齐11 labelx.grid(row=0,column=1)1213 #----------------------------------------------------------------------------1415 # 创建一个子容器,其父容器为rview16 monty = LabelFrame(rview, text="== 子容器标题 ==")17 monty.grid(column=0, row=0,padx=5,pady=5) #设置子容器在父容器的位置181920 #创建子容器里的按钮121 buttonx1=Button(monty,text="按钮1",font=("宋体",20),fg="red")22 buttonx1.grid(row=0,column=0) #设置按钮在子容器的位置2324 #创建子容器里的按钮225 buttonx2=Button(monty,text="按钮2",font=("宋体",20),fg="green")26 buttonx2.grid(row=1,column=0) #设置按钮在子容器的位置2728 #---------------------------------------------------------------------------2930 #消息循环 显示窗口31 rview.mainloop() 文本框加滚动条实现:1 from tkinter import *2 #创建窗口3 rview=Tk()4 #标题5 rview.title("东小东")6 #窗口基于屏幕的坐标 +x轴+y轴7 rview.geometry("+500+200")8 #创建lab标签9 labelx=Label(rview,text="文本框实现",font=("宋体",30))10 #显示lab标签 网格布局 sticky=W #左对齐 E为右对齐 默认为中间对齐11 labelx.grid(row=0,column=0)1213 #----------------------------------------------------------------------------1415 # 创建一个纵向滚动的滚动条,打包到窗口右侧,铺满Y方向16 scrollbar = Scrollbar(rview, orient=VERTICA

TK在大多数 Unix平台、windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口。可实现Python的GUI编程。

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

<p align="left">一般的环境里直接import tkinter即可使用,但Ubuntu里既然没有,所以要自己安装,因为笔者Ubuntu系统里默认有python2,python3是自己后来安装的,查阅资料得到结果是tkinter安装成功后,并没有和python3成功链接,需要重新安装python3才可以。


<p align="left">安装:sudo apt-get install python-tk


<p align="left">安装:sudo apt install tk-dev


<p align="left">重新安装python3环境:


<p align="left">进入python版本解压目录:cd python3.7


<p align="left">命令:./configure


<p align="left">命令:make


<p align="left">命令:sudo make install


<p align="left"> 


<p align="left">显示图片需安装pillow库 :


<p align="left">指定版本安装:sudo pip3 install Pillow==4.3.0


<p align="left"> 


<p align="left"> 


<p align="left"><span >下面先用一个小爬虫程序入门python的tkinter编程:


<p align="left"> 


<p align="left">效果:

程序:

tkinter * tkinter PIL re labelx[]= textx= textx= textx== messageBox.showinfo(, datax= :60 : : rx=requests.post(,data= rx.enCoding= HTMLx=rx.text zz= imagex= imagedatax=requests.get(+ ff=open(.format(textx), bmx=ImageTk.PhotoImage(file= lab2=Label(rvIEw,image= lab2.bm= lab2.grID(row=2,columnspan=2 rvIEw= rvIEw.Title( rvIEw.geometry( labelx=Label(rvIEw,text=,fg=,Font=(,30 labelx.grID(row=0,column= entryx=Entry(rvIEw,20 entryx.grID(row=0,column=1 buttonx=button(rvIEw,text=,30),command= buttonx.grID(row=1,column=2 rvIEw.mainloop()

其他补充:

<p align="left">按钮标签:


<p align="left">设置是否可点击buttonx.config(state=Disabled)//不可按 norMAL为正常


<p align="left">改变文字:buttonx["text"]="改变文字"


<p align="left"> 


<p align="left">Lab标签:


<p align="left">改变文字内容:labx.config(text="改变文字")


<p align="left">改变文字样式:labx.config(Font=("xx",100,"bold")) #字体,大小,加粗


<p align="left"> 


<p align="left">grID为表格布局


<p align="left">lab2.grID(row=2,columnspan=2)#columnspan为跨两列,对应 rowspan为跨行


<p align="left">sticky=“ew”#横向占满填充


<p align="left"> 


<p align="left">其它属性:


<p align="left">padx和pady=10 #设置边距


<p align="left">bg为背景色;fg为前景色


<p align="left">布局默认:将页面尺寸去掉,则自动根据内容大小动态包裹


<p align="left">鼠标移动到此次改变箭头样式:标签.config(cursor="gumby")


<p align="left">对齐方式:anchor=W //W左E右


<p align="left">浮雕效果:relIEf=SUNKEN


<p align="left"> 


<p align="left">pack布局:


<p align="left">标签.pack()默认为上居中随窗口移动不变


<p align="left">标签.pack(fill=X)#横向大小填充,内容居中


<p align="left">标签.pack(fill=BOTH,expand=True)#纵向大小填充,内容居中


<p align="left">标签.pack(fill=BOTH,expand=True)#填充全部,内容居中


<p align="left">标签.pack(sIDe=left) #全部向左靠


<p align="left"> 


<p align="left">加载一张图片:


<p align="left">imgx = PhotoImage(file='dong.gif')


<p align="left">label = Label(image=imgx,wIDth=20,height=20)

label.image = imgx

label.grID(row=1,column=1,sticky=W + E + N + S,padx=10,pady=10) #sticky=W + E + N + S 表示填充控件

可绑定的事件:

#其中1为鼠标左键,2为鼠标右键,3为鼠标中键

(F1,F2,F3,Delete…)

事件处理函数形参可用值:

事件

事件

获取鼠标点击坐标实现:

<p align="left">关闭程序是出现d出提示框:

 

子容器:

tkinter * rvIEw= rvIEw.Title( rvIEw.geometry( labelx=Label(rvIEw,text=,30 labelx.grID(row=0,column=1 monty = LabelFrame(rvIEw,text= monty.grID(column=0,row=0,padx=5,pady=5) buttonx1=button(monty,text=,20),fg= buttonx1.grID(row=0,column=0) buttonx2=button(monty,text=,fg= buttonx2.grID(row=1,column=0) rvIEw.mainloop()

文本框加滚动条实现:

tkinter * rvIEw= rvIEw.Title( rvIEw.geometry( labelx=Label(rvIEw,text=,column= scrollbar = Scrollbar(rvIEw,orIEnt=VERTICAL,bg=) scrollbar.grID(row=2,column= text = Text(rvIEw,wIDth=50,height=10,yscrollcommand= text.grID(row=2,column= scrollbar.config(command= rvIEw.mainloop()

添加 *** 作属性:

text.delete(0.0,END)text.insert(END,)

将opencv的图片转换到TK:

PIL Image,ImageTk cv2image = cv2.cvtcolor(tux,cv2.color_BGR2RGBA) current_image = Image.fromarray(cv2image) imgx = ImageTk.PhotoImage(image= label = Label(image= label.image = label.grID(row=1,column=0,rowspan=4,pady=10)

 

<p align="left">Python的tkinter参考:<a href="http://effbot.org/tkinterbook/listbox.htm"&gt;http://effbot.org/tkinterbook


<p align="left">教程参考:潭州教育

总结

以上是内存溢出为你收集整理的Python的GUI编程(TK)全部内容,希望文章能够帮你解决Python的GUI编程(TK)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)