欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python GUI之Tkinter

程序员文章站 2022-03-03 20:06:13
​基于文本用户编程(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() 

运行后如下:
Python GUI之Tkinter

除上面的几个具体方法外,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() 

运行后如下:
Python GUI之TkinterPython GUI之Tkinter

除上述属性外,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

相关标签: python Tkinter