前言
本文仅是个人对tkinter学习过程的一些记录,可能有误解之处,烦请指教。如果觉得有可看之处,请多鼓励,后续会持续完善。
一、tkinter是什么?
tkinter软件包是Tk GUI工具包的标准Python接口。 Tk和tkinter在大多数Unix平台以及Windows系统上都可用。
二、使用步骤
1. 安装
tkinter作为python的标准GUI接口,在安装python的时候就已经默认安装,除非你自己手动取消安装。
可以通过命令行输入python -m tkinter
打开一个简单的Tk窗口。如果可以通过命令行正常打开这个Tk窗口,表明你已经安装了该包;否则你需要自己安装该包。
参考:在windows上安装tkinter
在Linux可以通过以下方式安装:
#python2
sudo apt-get install python-tk
#python3
sudo apt-get install python3-tk
本文涉及代码全部在python3 下运行
2.引入库
代码如下(示例):
import tkinter as tk
3.简单示例
本文以开发一个登陆界面为目的,学习所需的各个元素。
那么先思考一下,一个登陆界面需要哪些元素呢?
- 一个主界面;
- 窗口名;
- 设置窗口宽高
- 账号密码文字提示;
- 账号密码输入框;
- 登陆按钮;
- 提示对话框
OK,先搞定这5个小部分,一个简单的GUI登陆界面就出来了
哇,这UI,设计的也太完美了吧。
代码如下(示例):
import tkinter as tk
# 1. 一个主界面;
main_win = tk.Tk()
# 2. 窗口名;
main_win.title("登陆界面")
# 3. 设置窗口宽高
main_win.geometry('400x300')
# 窗口持续显示
main_win.mainloop()
咦?怎么是一片空白?
对话框出来了,不过里面现在还是空空如也,接下来就要慢慢添加各个元素了。
import tkinter as tk
from tkinter import messagebox
# 1. 一个主界面;
main_win = tk.Tk()
# 2. 窗口名;
main_win.title("登陆界面")
# 3. 设置窗口宽高
main_win.geometry('400x300')
# 4. 账号密码文字;
accoun_label = tk.Label(main_win, text="账号:", font=('Arial', 12)).pack()
pwd_label = tk.Label(main_win, text="密码:", font=('Arial', 12)).pack()
# 5. 账号密码输入框;
accoun_var = tk.StringVar()
pwd_var = tk.StringVar()
accoun_entry = tk.Entry(main_win, textvariable=accoun_var, show=None, font=('Arial', 14)).pack()
pwd_entry = tk.Entry(main_win, textvariable=pwd_var, show='*', font=('Arial', 14)).pack()
# 6. 登陆按钮;
login_btn = tk.Button(main_win, text='登 陆').pack()
# 7. 提示对话框
messagebox.showinfo(title='提示框', message='登陆成功!')
# 窗口持续显示
main_win.mainloop()
嗯!总算是有毛有脚了,接下来就是布局了。
import tkinter as tk
from tkinter import messagebox
def show_info_box():
# 7. 提示对话框
return messagebox.showinfo(title='提示框', message='登陆成功!')
# 1. 一个主界面;
main_win = tk.Tk()
# 2. 窗口名;
main_win.title("登陆界面")
# 3. 设置窗口宽高
main_win.geometry('400x300')
# 4. 账号密码文字;
accoun_label = tk.Label(main_win, text="账号:", font=('Arial', 12)).place(x=70, y=80)
pwd_label = tk.Label(main_win, text="密码:", font=('Arial', 12)).place(x=70, y=120)
# 5. 账号密码输入框;
accoun_var = tk.StringVar()
pwd_var = tk.StringVar()
accoun_entry = tk.Entry(main_win, textvariable=accoun_var, show=None, font=('Arial', 14)).place(x=120, y=80)
pwd_entry = tk.Entry(main_win, textvariable=pwd_var, show='*', font=('Arial', 14)).place(x=120, y=120)
# 6. 登陆按钮;
login_btn = tk.Button(main_win, text='登 陆',width=20, command=show_info_box).place(x=120, y=200)
# 窗口持续显示
main_win.mainloop()
完美复现,毫无瑕疵
开个玩笑。这个界面不仅简单还没有任何实际功能,还需要后续不断学习不断完善。
总结
- 主窗口及其标题和宽高
tkinter.Tk()
,mainloop()
持续显示 - 文本显示
Label
- 组件可视化需要使用
.pack()
,或者.place()
设置固定位置 - 输入框
Entry
,及其回显:show
参数(属性) - 按钮
Button
,绑定触发函数使用:command
- 对话框
messagebox.showinfo
,需先from tkinter import messagebox
对话框如果不是from tkinter import messagebox
,而是使用tk.messagebox.showinfo(title='提示框', message='登陆成功!')
,则会报错。
报错信息:AttributeError: module 'tkinter' has no attribute 'messagebox'
以上就是今天所学的内容,本文仅仅简单介绍了tkinter的使用,多使用tkinter以找到一种灵活的使用方式,tkinter的其他功能还需要继续探索。