当前位置: 移动技术网 > IT编程>脚本编程>Python > Python GUI之Tkinter

Python GUI之Tkinter

2020年09月28日  | 移动技术网IT编程  | 我要评论
​基于文本用户编程(Text-based User Interface,TUI)​图形用户编程(Graphical User Interface, GUI)​Python提供了很多的GUI界面工具,如python的标准TK GUI工具包接口Tkinter、wxWidgets模块、easyGUI模块、wxPython模块等。本文主要介绍使用Tkinter模块开发图形用户界面的方法,并介绍一些常用的Tkinter组件。Tkinter模块​Tkinter模块(TK接口)是Python的..

前言

  • 基于文本用户编程(Text-based User Interface,TUI)

  • 图形用户编程(Graphical User Interface, GUI)

Python提供了很多的GUI界面工具,如python的标准TK GUI工具包接口Tkinter、wxWidgets模块、easyGUI模块、wxPython模块等。本文主要介绍使用Tkinter模块开发图形用户界面的方法,并介绍一些常用的Tkinter组件。


一、Tkinter模块

Tkinter模块(TK接口)是Python的标准TK GUI工具包的接口。TK和TKinter可以在大多数Unix平台下使用,也可以应用在Windows和Macintosh系统里。

1. 创建Windows窗体

在GUI程序中,首先需要建立一个顶层窗口,这个顶层窗口可以容纳所有的小窗口对象,如标签、按钮、列表框等,即,顶层窗口是用来放置其他窗口或组件的地方。

1.1. 创建窗口对象

import tkinter
win = tkinter.Tk() #创建一个窗体对象并取名为win,可以叫顶层窗口或根窗口 win.mainloop() #显示窗体,并进入无限监听事件循环,直到单机窗体右上方的关闭按钮,或者使用其他方法将窗口关闭 

1.2. 设置窗体属性

可以通过设置窗体的属性来改变窗体的显示方式。

如,title()可设置窗口的标题;

还可通过内建的geometry()、maxsize()、minsize()方法设置窗口的大小。geometry(size)方法设置窗体初始大小,size的格式为“宽度x高度”(注意,这里的x不是乘号,是小写的字母x);maxsize()和minsize()方法用来设置最大窗体和最小窗体的尺寸,格式如下:

import tkinter
win = tkinter.Tk() win.title("Tkinter Test Win") win.geometry("800x600") win.maxsize(1440,900) win.minsize(400,300) win.mainloop() 

2. 标签组件Label

Label组件是最简单的组件之一,用于在窗口中显示文本或位图。

win = tkinter.Tk() win.title("Tkinter Test Win") lab1 = tkinter.Label(win,text="label test!") #创建Label组件,文本 lab1.pack() #显示lab1 lab2 = tkinter.Label(win,bitmap="error") #创建Label组件,位图 lab2.pack() #显示lab2 win.mainloop() 

可选用位图

具体描述
error 显示错误图标
hourglass 显示沙漏图标
info 显示信息图标
questhead 显示疑问头像图标
question 显示疑问图标
warning 显示警告图标
gray12 显示灰度背景图标gray12
gray25 显示灰度背景图标gray25
gray50 显示灰度背景图标gray50
gray75 显示灰度背景图标gray75

由于内置的位图个数有限,而且显示的都是灰度图,所以在实际的应用中,往往会选择一些自定义的图标。这时,可以运用image属性和bm属性来设置自定义的图标,如下:

win = tkinter.Tk() bm = tkinter.PhotoImage(file = 'C:\Python3.8.5\Lib\idlelib\Icons\idle_48.png') lab1 = tkinter.Label(win,image = bm) lab1.bm = bm
lab1.pack() win.mainloop() 

运行后如下:
在这里插入图片描述

除上面的几个具体方法外,Label组件还有一些常用的属性,如下表:

属性 说明
fg 设置组件的前景色
bg 设置组件的背景色
width 设置组件宽度
height 设置组件高度
compound 设置文本或图像在Label中如何显示,默认值为None。
当指定image/bitmap时,文本(text)将会被覆盖,只显示图像,可选值如下:
left:图像居左显示
right:图像居右显示
top:图像居上显示
bottom:图像巨下显示
center:图像居中显示
wraplength 指定单行文本的长度,用于多行文本显示
justify 指定多行文本的对齐方式
anchor 指定文本或图片在Label中的显示位置,可选值如下:
e:垂直居中,水平居右
w:垂直居中,水平居左
n:垂直居上,水平居中
s:垂直居下,水平居中
也可以是上面4个值的两两组合(n, ne, e, se, s, sw, w, nw)
center:垂直居中,水平居中

example:

win = tkinter.Tk() lab1 = tkinter.Label(win,text = 'jzywdsqa',compound = 'center',bg = 'blue', anchor = 'w', width = 30, height = 30) lab1.pack() win.mainloop() 

3. 按钮组件Button

3.1 创建和显示Button对象

Button组件用于在窗体中设置和显示按钮。创建Button对象的基本方法如下:

Button_1 = tkinter.Button(窗体对象,text = "显示名称",command = 点击后调用) Button_1.pack() 

创建简单的按钮:

import tkinter from tkinter import messagebox def Submit(): messagebox.showinfo(title = "",message = "Submit") def GenerateWin(): win = tkinter.Tk() win.title("Tkinter Test Win") b = tkinter.Button(win,text = "Submit",command = Submit) b.pack() win.mainloop() if __name__ == '__main__' : GenerateWin() 

3.2 Button对象的常用属性

按钮上既可以显示文本,也可以显示用户自定义的图片。可以应用image属性和bm属性进行设置。

创建图片格式的按钮:

import tkinter from tkinter import messagebox def Submit(): messagebox.showinfo(title = "",message = "Submit") def GenerateWin(): win = tkinter.Tk() win.title("Tkinter Test Win") bm = tkinter.PhotoImage(file='C:\Python3.8.5\Lib\idlelib\Icons\idle_48.png') b = tkinter.Button(win,text = "Submit",command = Submit,image = bm,compound = 'center',width = 60,height=60) #不加compound则文本会被默认覆盖 b.bm = bm
    b.pack() win.mainloop() if __name__ == '__main__' : GenerateWin() 

运行后如下:
在这里插入图片描述在这里插入图片描述

除上述属性外,Button组件还有一些常用的属性,如下表:

属性 说明
fg 设置组件的前景色
bg 设置组件的背景色
compound 设置文本或图像在Label中如何显示,默认值为None。
当指定image/bitmap时,文本(text)将会被覆盖,只显示图像,可选值如下:
left:图像居左显示
right:图像居右显示
top:图像居上显示
bottom:图像巨下显示
center:图像居中显示
wraplength 指定单行文本的长度,用于多行文本显示
bimap 指定按钮显示位图
state 设置组件状态
bd 设置按钮边框大小,默认值为1或2个像素

设置一个有按钮的边框、一个disable的按钮:

import tkinter def GenerateWin(): win = tkinter.Tk() win.title("Tkinter Test Win") b = tkinter.Button(win,text = "加粗按钮", bd = 10) b1 = tkinter.Button(win,text = "Disable Button", state = "disabled") b.pack() b1.pack() win.mainloop() if __name__ == '__main__' : GenerateWin() 

", bd = 10)
b1 = tkinter.Button(win,text = “Disable Button”, state = “disabled”)
b.pack()
b1.pack()
win.mainloop()

if name == ‘main’ :
GenerateWin()

本文地址:https://blog.csdn.net/qq_39892503/article/details/108857880

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网