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 importmessagebox3 from PIL importImage,ImageTk4 import re #正则表达式

5 importrequests6 defbutonck():7 #改变lab颜色

8 labelx["fg"]="green"

9 #获取输入框值

10 textx=entryx.get()11 #去掉字符串前后空格

12 textx=textx.strip()13 if textx=='':14 #弹出提示框

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='

.*?

'#括号里的.*?表示要取的值

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"]=2

63

64

65 #消息循环 显示窗口

66 rview.mainloop()

其他补充:

按钮标签:

设置是否可点击buttonx.config(state=DISABLED)//不可按 NORMAL为正常

改变文字:buttonx["text"]="改变文字"

Lab标签:

改变文字内容:labx.config(text="改变文字")

改变文字样式:labx.config(font=("xx",100,"bold")) #字体,大小,加粗

获取标签上的内容:constr=labx["text"]

对齐方式为左上角:Label(rootv,text="123",justify=LEFT,font=("宋体",19),width=15,height=6,anchor='nw')

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 = 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…)

按任意键:

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

输出点击的坐标:event.x event.y 如:事件

输出键盘按键对应的符号:event.char 如:事件

获取鼠标点击坐标实现:

关闭程序是出现弹出提示框:

子容器:

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)12

13 #----------------------------------------------------------------------------

14

15 #创建一个子容器,其父容器为rview

16 monty = LabelFrame(rview, text="== 子容器标题 ==")17 monty.grid(column=0, row=0,padx=5,pady=5) #设置子容器在父容器的位置

18

19

20 #创建子容器里的按钮1

21 buttonx1=Button(monty,text="按钮1",font=("宋体",20),fg="red")22 buttonx1.grid(row=0,column=0) #设置按钮在子容器的位置

23

24 #创建子容器里的按钮2

25 buttonx2=Button(monty,text="按钮2",font=("宋体",20),fg="green")26 buttonx2.grid(row=1,column=0) #设置按钮在子容器的位置

27

28 #---------------------------------------------------------------------------

29

30 #消息循环 显示窗口

31 rview.mainloop()

输入框内容操作

1 from tkinter import *

2

3 defbutonck():4 print(entryx.get())#输出输入框值

5

6 #创建窗口

7 rview=Tk()8 #标题

9 rview.title("123")10 #窗口大小 长高用小写x隔开

11 #rview.geometry("600x300")

12 #创建lab标签

13 labelx=Label(rview,text="输入:",fg="red",font=("宋体",30))14 #显示lab标签 网格布局 sticky=W #左对齐 E为右对齐 默认为中间对齐

15 labelx.grid(row=0,column=0)16 #创建输入框默认显示

17 entext =StringVar()18 #创建输入框

19 entryx=Entry(rview,font=("宋体",20),textvariable=entext)20 #显示输入框

21 entryx.grid(row=0,column=1)22 #创建按钮

23 buttonx=Button(rview,text="确定",font=("宋体",30),command=butonck)24 #显示按钮

25 buttonx.grid(row=0,column=2)26

27 #-------------------------------------------------

28 #设置内容

29 entext.set('西')30 #插入内容,最开始处

31 entryx.insert(0,'东')32 #插入内容,光标位置开始

33 entryx.insert(INSERT,'想')34 #插入内容,末尾

35 entryx.insert(END,'想')36 #--------------------------------------------------

37

38 #消息循环 显示窗口

39 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)12

13 #----------------------------------------------------------------------------

14

15 #创建一个纵向滚动的滚动条,打包到窗口右侧,铺满Y方向

16 scrollbar = Scrollbar(rview, orient=VERTICAL,bg="red") #orient默认为纵向

17 scrollbar.grid(row=2,column=0)18

19 #打包一个文本域到窗口,y方向滚动文本的监听丢给滚动条的set函数(文本域主动关联滚动条)

20 #高度和宽度确定的是字符个数(win)

21 text = Text(rview, width=50,height=10, yscrollcommand=scrollbar.set)22 text.grid(row=2,column=0)23

24 #拉动滚动条时,改变文本域在y方向上的视图(滚动条主动关联文本域)

25 scrollbar.config(command=text.yview)26

27 #---------------------------------------------------------------------------

28

29 #消息循环 显示窗口

30 rview.mainloop()

添加操作属性:

text.delete(0.0, END)#清空文本框

text.insert(END, "追加的内容")

将opencv的图片转换到TK:

from PIL import Image, ImageTk

1 cv2image = cv2.cvtColor(tux, cv2.COLOR_BGR2RGBA) #转换颜色从BGR到RGBA

2 current_image = Image.fromarray(cv2image) #将图像转换成Image对象

3 imgx = ImageTk.PhotoImage(image=current_image)4 label = Label(image=imgx)5 label.image =imgx6 label.grid(row=1, column=0, rowspan=4, sticky=W + E + N + S, padx=10, pady=10) #sticky=W + E + N + S 表示填充控件

opencv视频流显示在TK

通过lab的方式会出现闪烁,通过画布方式完美解决

1 importthreading2 importcv23 from tkinter import *

4 from PIL importImage, ImageTk5 from tkinter importttk6

7 rootv =Tk()8 rootv.title("东小东")9

10 #创建lab标签

11 labelx=Label(rootv,text="东小东TK视频流",fg="red",font=("宋体",30))12 labelx.grid(row=0,column=0)13

14 #创建一个画布

15 canv = Canvas(rootv,width=640,height=480,bg = 'red')16 canv.grid(row=1,column=0)17

18 defshow_video():19 globallabelvvv20 vix=cv2.VideoCapture(2) #打开摄像头

21 #imgtk=''

22 whileTrue:23 ret,tu=vix.read() #ret为返回值,tu为当前帧

24 tu1=cv2.flip(tu,1)#图像反转,1为左右对换,-1为上下对换

25 cv2image = cv2.cvtColor(tu1, cv2.COLOR_BGR2RGBA)#转换颜色从BGR到RGBA

26 current_image = Image.fromarray(cv2image) #将图像转换成Image对象

27 imgtk = ImageTk.PhotoImage(image=current_image)#img

28 canv.create_image(0,0,anchor=NW,image=imgtk)#将图片添加到画布

29 obr =imgtk30

31 #开启线程

32 t1=threading.Thread(target=show_video,args=())33 t1.start()34

35 rootv.mainloop()36

画布视频流:https://stackoverflow.com/questions/35319531/python-tkinter-canvas-root-after-maximum-recursion-depth-exceeded

教程参考:潭州教育

python界面编程-Python的GUI编程(TK)相关推荐

  1. python窗口图形界面编程上传图片_python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例...

    注意主窗口一定要为tk.Tk(),在主窗口上通过button的点击相应子函数创建子窗口,注意此时创建出来的窗口必须是Toplevel,否则出错. 至于用图片在窗口上绘图,则按代码所示即可. # -*- ...

  2. python界面开发-python 图形界面编程(GUI)

    1. Tkinter 在开始GUI编程之前,需要先了解这几个概念:窗口和控件.事件驱动处理.布局管理器. 窗体控件: 窗体.标签.按钮.列表框.滚动条等. 事件驱动:按下按钮及释放.鼠标移动.按回车键 ...

  3. python编程入门t-Python GUI编程完整示例

    本文实例讲述了Python GUI编程.分享给大家供大家参考,具体如下: import os from time import sleep from tkinter import * from tki ...

  4. Python编程实例-Tkinter GUI编程基础超级详解

    Tkinter GUI编程基础超级详解 1.什么是Tkinter Python 有很多 GUI 框架,但 Tkinter 是唯一内置到 Python 标准库中的框架. Tkinter 有几个优势. 它 ...

  5. python界面颜色-python界面颜色

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释 作为pyhon开发 ...

  6. python界面图片-python图形用户界面(六):可视化给图片添加上文字

    前言 之前在图形处理系列课程中,讲过如何给图片添加上文字,尽管通过程序设定,已经可以实现文本自动居中的效果,人的需求是会不断变的,我们有时候可能并不想只放在中间,而是想要放到图片的任意一个位置,用原来 ...

  7. python界面-用python编写简单ui界面窗口

    学习了Python编程语言之后,可以做许多有趣的事情.例如可以使用python设计一个窗口,现在小编将使用tkinter为大家演示创建一个小窗口,设置了2个按钮,一个是btn关闭窗口,另一个是btn用 ...

  8. python tkinter载入图片_Python的GUI编程

    点  击  上  方  蓝  字  关  注  我  们平常运行python程序时,大部分都是将python文件放入编译器中进行编译,或是在cmd中使用python命令直接运行,然后用一些方法来输出程 ...

  9. python画五角星代码_Python GUI 编程tkinter--画五角星和简单的动画制作

    1.利用Python的tkinter画一个五角星: 2.做一个简单的动画 分析五角心的五个顶点的坐标: 确立五角星的中心点和半径,再确立五角星的五个角的坐标信息,其中五角星的各个角读书为36度,具体的 ...

  10. Python(十)之GUI编程

    在windwos上实现:使用wxPython模块 #!/usr/bin/env python # encoding: utf-8import wx#创建open按钮触发的事件对应的函数 def loa ...

最新文章

  1. 微生物所科学家建成小鼠肠道微生物资源库
  2. Spring整合Redis时报错:java.util.NoSuchElementException: Unable to validate object
  3. NanoPi NEO Air使用三:OverlayFS、CPU温度和频率、wifi、蓝牙、npi-config
  4. MYSQL出错代码和出错信息对照表
  5. 搭建LNMP遇到的问题
  6. php7安装xhprof,PHP 7.1安装xhprof进行性能分析的介绍
  7. 信息学奥赛一本通 1001:Hello,World | OpenJudge NOI 1.1 01:Hello, World
  8. 基于注意力机制的知识图谱关系预测 ACL 2019
  9. tsql创建表_在序列中创建缺口– TSQL存储过程顾问
  10. hdu 1818 It's not a Bug, It's a Feature!(位运算+bfs优先队列)
  11. ubuntu搜狗输入法下载
  12. sap 双计量单位_维护计量单位的描述
  13. sox免安装直接使用
  14. 【macOS免费软件推荐】第1期:MuseScore
  15. php 转ascii编码,php与ascii码的转换
  16. Win10 如何显示所有任务栏图标,不进行隐藏
  17. Linux 执行新程序:execve() 函数
  18. 大规模多智能体路径规划
  19. 2D游戏和3D游戏的主要区别
  20. Windows UAC提权

热门文章

  1. 15款jQuery带缩略图的图片轮播切换特效代码
  2. IDEA maven webapp项目not find catalina.jar 错误
  3. matlab在汽车上的运用,25份MATLABSIMULINK在汽车开发中的应用PPT
  4. windows 如何做 Safari 测试
  5. idm显示您正在使用一个假冒的序列号_最强下载神器IDM的安装和使用
  6. SAP ERP系统总帐概念
  7. 教育部:原则上疫情得到有效控制前,大学生不返校、高校不开学
  8. 2022-4-9 Leetcode 912.排序数组
  9. python获取线程名称_Python-线程
  10. 2021-11-14剑指OfferII014.字符串中的变位词