Python GUI之Tkinter

前言

  • ​ 基于文本用户编程(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()


2020年9月28日 21点07分 update
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值