tkinter是python内置的一个模块,用它可以快速地设计开发简单的python图形界面程序。
在windows下就是一个窗口应用程序。
一、tkinter创建应用程序窗口:
例:如下代码创建了一个名为root的窗口(标题、大小、位置等默认)
1 | import tkinter # 导入模块 |
如下代码创建了一个名为win的窗口(标题、大小、位置指定)
1 | from tkinter import * # 导入模块 |
二、tkinter提供了一些常用组件(Widget),用于在窗口内显示不同形式的内容。
- Label组件:用于显示指定文字或图片
显示文本:
1 | label=Label(win,text='要显示的文本内容',fg='red',bg='blue',font=('黑体',48,bold)) |
显示图片:
1 | photo=PhotoImage(file="brick.png") # 获取png图片文件或gif图片 |
要处理其它类型的图片需要安装第三方库:pip install Pillow
1 | import os |
- Entry组件:用于数据输入或显示(单行)
1 | e=Variable() # 邦定变量 |
- Text组件:用于多行文本输入或显示
1 | text=Text(win,width=30,height=4) |
1 |
|
- Button组件:用于创建按钮执行指定程序
1 | button=Button(win,text='退出',command=win.destroy) # 创建一个退出按钮 |
1 | import tkinter |
- 更多组件自行百度
三、小练习
- 数字时钟:
1 | from tkinter import * |
移动字幕:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23from tkinter import *
root = Tk()
root.title("滚动字幕")
root.geometry("500x240+100+100")
show_str = "江苏省昆山中学欢迎你!"
pos =500
def run():
global pos
show_lb.place(x=pos, y=100)
pos=pos-1
if pos<-len(show_str)*26:
pos=root.winfo_width()
show_lb.after(18,run)
show_lb = Label(root, text=show_str)
show_lb.config(font=('楷体',20))
show_lb.config(fg='red')
run()
root.mainloop()随机(按学号)点名:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29from tkinter import *
import random
data=list(range(1,56))
stop_show=True
def show():
if stop_show:
return
num=random.choice(data)
show_label.config(text=num)
root.after(50,show)
def start(event):
global stop_show
stop_show=not stop_show
show()
root=Tk()
root.title('随机点名')
root.resizable(0,0)
root.geometry('200x80')
show_label=Label(root,text='888',font=('Arial',48,'bold'),fg='red')
show_label.pack()
root.bind('<Button-1>',start)
root.mainloop()简单加法计算器:
1 | from tkinter import * |
- 打字速度测试:
1 | from tkinter import * |
- 无窗口标题栏数字时钟:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44from tkinter import *
import time
root=Tk()
root.title('数字时钟')
root.geometry("-0+0")
root.resizable(0,0)
root.overrideredirect(True)
time_lbl=Label(text="",font=('Helvetica',48,'bold'),fg='red') # Helvetica,Arial
time_lbl.pack()
stop_show=False
def show():
if stop_show==True:
return
now=time.strftime("%H:%M:%S")
time_lbl.configure(text=now)
root.after(1000,show)
def right_click(event):
time.sleep(0.002)
root.destroy()
time_lbl.bind('<ButtonRelease-3>',right_click)
def mouse_enter(event):
global stop_show
stop_show=True
time_lbl.bind('<Enter>',mouse_enter)
def mouse_leave(event):
global stop_show
stop_show=False
show()
time_lbl.bind('<Leave>',mouse_leave)
def left_click(event):
global stop_show
stop_show=not stop_show
show()
time_lbl.bind('<Button-1>',left_click)
show()
root.mainloop()