您的当前位置:首页正文

Python教程-Tkinter

2023-08-14 来源:爱站旅游
导读Python教程-Tkinter
Python教程-Tkinter

⽬录

⽤户与程序的交互

CLI(Command Line Interface,命令⾏接⼝)GUI( Graphical User Interface,图形⽤户接⼝)

CLI

Command Line Interface,命令⾏接⼝,以⼀⾏⽂字作为输⼊,⼀般只能显⽰⽂字,例如windows⾃带的cmd

GUI

Graphical User Interface,图形⽤户接⼝,我们常⽤的window系统就有很多丰富的界⾯,包括窗⼝、按钮、⽂本显⽰,图⽚显⽰等等

python上的GUI库 -- Tkinter

Tkinter 是 Python 的标准 GUI 库。Python 使⽤ Tkinter 可以快速的创建 GUI 应⽤程序。IDLE、turtle界⾯也是⽤ Tkinter 编写⽽成。

Tkinter窗体

Python⾃带的可编辑的GUI界⾯,是⼀个图像窗⼝。Tkinter是使⽤ python 进⾏窗⼝视窗设计的模块。⽰例:

# 导⼊tkinter库import tkinter

# 创建⼀个窗体main = tkinter.Tk()

# 进⼊消息循环,让窗⼝可以不断刷新main.mainloop()

设置窗体的属性

import tkinter

main = tkinter.Tk()# 设置标题

main.title(\"My First Window\")# 设置⼤⼩(宽x⾼)

main.geometry(\"300x200\")main.mainloop()

Tkinter显⽰控件--Label

Label(标签)控件,是最简单的显⽰控件,可以显⽰⼀些⽂字⽰例:

import tkinter

main = tkinter.Tk()

l = tkinter.Label(main,text='First Label')l.pack()

main.mainloop()

其中'l.pack()'表⽰将创建的Label控件l放到main布局中设置Label的背景颜⾊

可在创建Label控件时指定bg属性为相应的背景颜⾊⽰例:

import tkinter

main = tkinter.Tk()

l = tkinter.Label(main,text='First Label',bg='red')l.pack()

main.mainloop()

也可以通过config⽅式进⾏配置Label可以设置以下属性属性bgfgtext

背景颜⾊

前景颜⾊,即⽂字的颜⾊显⽰的⽂字

说明

height控件的⾼度,Label中表⽰为⼀个字符⾼度的多少倍width控件的宽度,Label中表⽰为⼀个字符宽度的多少倍...⽰例

import tkinter

main = tkinter.Tk()l = tkinter.Label(main)l.config(text='First Label')l.config(bg='red')l.pack()

main.mainloop()

...

Tkinter按钮控件 -- Button

Button(按钮)可以让⽤户点击⽰例

b = tkinter.Button(main)b.config(text='First Button')b.pack()

同理,也可以设置config改变背景颜⾊等属性

b = tkinter.Button(main)b.config(text='First Button')b.config(bg='green')b.pack()

按钮的点击事件处理

以上⽰例的按钮点击没有任何反应,因为我们还没有设置按钮的command属性,该属性表⽰点击按钮后会调⽤的函数。因此我们需要先定义⼀个函数,例如

def btn_click():

print('Button Click')

然后,设置按钮的command属性为上⾯定义的btn_click函数

b.config(command=btn_click)

运⾏程序,点击按钮,观察IDLE输出,可以观察到,每次点击按钮,IDLE都会输出⼀句Button Click我们也可以通过按钮的点击事件改变其他控件的属性,例如label控件的显⽰⽂字,只需要在btn_click

def btn_click():

print('Button Click') l.config(text='changed')

运⾏程序,点击按钮就会改变label的显⽰⽂字了完整代码为:

import tkinterdef btn_click():

print('Button Click')main = tkinter.Tk()

main.title('Hello tkinter')main.geometry('300x200')

l = tkinter.Label(main, text='First label')l.config(bg='red')l.config(fg='white')l.config(height=5)l.config(width=20)l.pack()

b = tkinter.Button(main,text='Click me')b.config(bg='green')

b.config(command=btn_click)b.pack()main.mainloop()

Tkinter的输⼊框控件 -- Entry

Python Tkinter ⽂本框⽤来让⽤户输⼊⼀⾏⽂本字符串。⽰例, 创建⼀个输⼊框

e = tkinter.Entry(main)e.pack()

获取和设置输⼊框的⽂字

有了输⼊框,我们可以让⽤户输⼊⽂字。但是上⾯的程序还没有处理⽤户输⼊了什么。

我们通过按钮的事件来进⾏配合,label的⽂字改为提⽰语:“Input some text:”,button的⽂字改为“OK”,并在button_click函数中处理输⼊框entry⾥⽤户输⼊的⽂字

def btn_click(): print(e.get())

l.config(text=e.get())

这样我们在输⼊框entry输⼊⽂字后,点击OK按钮,会发现标签label的⽂字也会随之改变我们也可以⼀开始在创建输⼊框entry的时候设置默认的⽂字

e = tkinter.Entry(main)e.insert(0,'000')e.pack()

这样窗⼝创建时entry就会⾃动有默认的输⼊⽂字完整代码如下:

import tkinter

def btn_click(): print(e.get())

l.config(text=e.get())main = tkinter.Tk()

main.title('Hello tkinter')main.geometry('300x200')

l = tkinter.Label(main, text='Input some text')l.config(bg='red')l.config(fg='white')l.config(height=2)l.config(width=20)l.pack()

e = tkinter.Entry(main)e.insert(0,'000')e.pack()

b = tkinter.Button(main,text='OK')b.config(bg='green')

b.config(command=btn_click)b.pack()main.mainloop()

tkinter的消息提醒控件 -- massagebox

消息框,⽤于显⽰你应⽤程序的消息框,也就是我们平时看到的弹窗。⼀个简单的提⽰框⽰例:

import tkinter.messagebox # 要使⽤messagebox先要导⼊模块tkinter.messagebox.showinfo(title='tips', message='Hello!')

消息框messagebo⼀般在⽤户进⾏了某些操作之后处理信息时使⽤。因此,经常会在按钮button的点击事件函数⾥使⽤。

例如,我们可以接着上⾯的例⼦,在⽤户点击button后,获取输⼊框entry的⽂字进⾏相应的提⽰:

import tkinter.messagebox

def btn_click():

tkinter.messagebox.showinfo(title='tips', message=e.get())

提⽰信息的⼏种形式

messagebox提⽰信息的⼏种形式:

tkinter.messagebox.showinfo(title='tips', message='hello') # 提⽰信息对话窗tkinter.messagebox.showwarning(title='tips', message='warning') # 提出警告对话窗tkinter.messagebox.showerror(title='tips', message='error!') # 提出错误对话窗

print(tkinter.messagebox.askquestion(title='tips', message='need some help?')) # 询问选择对话窗return 'yes', 'no'print(tkinter.messagebox.askyesno(title='tips', message='hello')) # return 'True', 'False'print(tkinter.messagebox.askokcancel(title='tips', message='hello')) # return 'True', 'False'

对话框

showinfo提⽰信息对话框showwarning提⽰警告对话框showerror提⽰错误对话框showyesno选择对话框

⽰例

我们可以根据判断⽤户的输⼊来进⾏不同形式的提⽰,例如判断输⼊是不是为“123456”⽰例

import tkinter.messagebox

def btn_click():

if e.get() == '123456':

tkinter.messagebox.showinfo(title='tips', message='bingo') else:

tkinter.messagebox.showerror(title='tips', message='error')

完整代码:

import tkinter

import tkinter.messagebox

def btn_click():

if e.get() == '123456':

tkinter.messagebox.showinfo(title='tips', message='bingo') else:

tkinter.messagebox.showerror(title='tips', message='error')main = tkinter.Tk()

main.title('Hello tkinter')main.geometry('300x200')

l = tkinter.Label(main, text='Input some text')l.config(bg='red')l.config(fg='white')l.config(height=2)l.config(width=20)

l.pack()

e = tkinter.Entry(main)e.insert(0,'000')e.pack()

b = tkinter.Button(main,text='OK')b.config(bg='green')

b.config(command=btn_click)b.pack()main.mainloop()

tkinter的列表框控件 -- Listbox

Listbox(列表框)组件⽤于显⽰⼀个选择列表。Listbox 只能包含⽂本项⽬,并且所有的项⽬都需要使⽤相同的字体和颜⾊。根据组件的配置,⽤户可以从列表中选择⼀个或多个选项。创建和设置Listbox

创建⼀个Listbox,并放置到主窗⼝:

lbox = tkinter.Listbox(main)lbox.pack()

此时创建的Listbox没有任何内容,需要往⾥⾯插⼊内容例如插⼊fruits:

fruits = ['apple', 'banana', 'orange']for f in fruits:

lbox.insert('end', f)

完整代码:

import tkinter

main = tkinter.Tk()

main.title('Hello tkinter')main.geometry('300x300')lbox = tkinter.Listbox(main)lbox.pack()

fruits = ['apple', 'banana', 'orange']for f in fruits:

lbox.insert('end', f)main.mainloop()

获取Listbox的选择内容curselection():

返回⼀个元组,包含被选中的选项的序号(从 0 开始)如果没有选中任何选项,返回⼀个空元组get(first, last=None):

返回⼀个元组,包含参数 first 到 last 范围内(包含 first 和 last)的所有选项的⽂本如果忽略 last 参数,表⽰返回 first 参数指定的选项的⽂本例如,添加⼀个按钮获取Listbox选择的内容:

def btn_click():

sl = lbox.curselection() for i in sl: print(i)

tkinter.messagebox.showinfo(message=lbox.get(i))b = tkinter.Button(main, text='ok')b.config(command=btn_click)b.pack()

完整代码:

import tkinter

import tkinter.messagebox

def btn_click():

sl = lbox.curselection() for i in sl: print(i)

tkinter.messagebox.showinfo(message=lbox.get(i))main = tkinter.Tk()

main.title('Hello tkinter')main.geometry('300x300')lbox = tkinter.Listbox(main)lbox.pack()

fruits = ['apple', 'banana', 'orange']for f in fruits:

lbox.insert('end', f)

b = tkinter.Button(main, text='ok')b.config(command=btn_click)b.pack()main.mainloop()

删除Listbox中的内容delete(first, last=None):

删除参数 first 到 last 范围内(包含 first 和 last)的所有选项如果忽略 last 参数,表⽰删除 first 参数指定的选项例如在btn_click中将选择的内容⽤delete删除:

def btn_click():

sl = lbox.curselection() for i in sl: print(i)

lbox.delete(i)

选择其中⼀个内容(例如banana),然后点击按钮,就可以发现选择的内容已被删除

完整代码:

import tkinter

import tkinter.messageboxdef btn_click():

sl = lbox.curselection() for i in sl: print(i)

lbox.delete(i)main = tkinter.Tk()

main.title('Hello tkinter')main.geometry('300x300')lbox = tkinter.Listbox(main)lbox.pack()

fruits = ['apple', 'banana', 'orange']for f in fruits:

lbox.insert('end', f)

b = tkinter.Button(main, text='delete')b.config(command=btn_click)b.pack()main.mainloop()

因篇幅问题不能全部显示,请点此查看更多更全内容