加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python的GUI编程(TK)

发布时间:2020-12-16 23:57:59 所属栏目:Python 来源:网络整理
导读:TK在大多数 Unix平台、Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口。可实现Python的GUI编程。 Tkinter模块("Tk 接口")是python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在W

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 style="font-size: 14px;">下面先用一个小爬虫程序入门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">关闭程序是出现弹出提示框:

?

子容器:

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)

?


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读