python 可以通过 tkinter, pyqt5或者pyside2等工具库实现界面设计。
比如 tkinter 是 python 自带的工具库,不需要安装就可以使用。功能也是比较强大的,一般的界面工具都可以实现。
比如 python 自带的 IDLE ,
IDLE 里面自带的案例界面,
以及turtle 的绘图窗口都是使用 tkinter 实现的。
平常使用时,只需要掌握基本的输入控件(单行文本框,多行文本框),
输出显示控件(标签控件,列表框控件,消息弹窗)
以及按钮控件的基本使用,就能够解决绝大多数的界面设计了。
对于控件比较多,或者界面比较复杂的,想要做的好看,还需要掌握基本的布局技巧方法。
常见控件的基本使用方法:
显示空窗口
代码语言:javascript复制from tkinter import *
# 1.创建一个主窗口
root = Tk()
# 2.添加标题
root.title("标题")
# 3.设置窗口大小 宽400 高200
root.geometry("400x200")
# 4.设置背景色
root.config(bg="lightblue")
# 5.程序一直循环,直到我们关闭窗口
root.mainloop()
标签
作用:主要用于显示文本内容。
代码语言:javascript复制from tkinter import *
# 1.创建一个主窗口
root = Tk()
# 2.添加标题
root.title("窗口程序")
# 3.设置窗口大小 宽400 高200
root.geometry("400x200")
# 4.设置背景色
root.config(bg="lightblue")
# 5.在root窗口上创建一个label控件
label = Label(root, text="hello world")
# 6.使用pack布局显示
label.pack()
# 7.程序一直循环,直到我们关闭窗口
root.mainloop()
按钮
作用:主要用于触发某个功能
代码语言:javascript复制from tkinter import *
# 1.创建一个主窗口
root = Tk()
# 2.添加标题
root.title("窗口程序")
# 3.设置窗口大小 宽400 高200
root.geometry("400x200")
# 4.设置背景色
root.config(bg="lightblue")
# 5.创建一个 确定 的按钮
button = Button(text="确定")
button.pack()
# 6.程序一直循环,直到我们关闭窗口
root.mainloop()
按钮改变标签的默认内容
代码语言:javascript复制from tkinter import *
# 1.创建一个主窗口
root = Tk()
# 2.添加标题
root.title("窗口程序")
# 3.设置窗口大小 宽400 高200
root.geometry("400x200")
# 4.设置背景色
root.config(bg="lightblue")
# 设置一个字符变量,tkinter自带的
var_name = StringVar()
# 设置变量的初始值
var_name.set("hello world")
# 这里将原来的text改成了textvariable了,然后等于var_name,这样内容就可以改变了
label = Label(root, textvariable=var_name)
label.pack()
# 定义方法
def change_content():
# 更改标签内容
var_name.set("python")
# 创建按钮以及绑定更改内容的方法
button = Button(text="改变内容",command = change_content)
button.pack()
# 程序一直循环,直到我们关闭窗口
root.mainloop()
点击前
点击后
消息弹窗
作用:弹窗信息,提示或者请求用户选择确认等
代码语言:javascript复制from tkinter import *
# 导入弹窗库
import tkinter.messagebox
# 1.创建一个主窗口
root = Tk()
# 提示消息框
tkinter.messagebox.showinfo('提示', '恭喜你,账号注册成功!')
# 消息警告框
tkinter.messagebox.showwarning('警告', '注意保护你的密码!')
# 错误消息框
tkinter.messagebox.showerror('错误', '你的密码错误,请重新输入!')
# 对话框
#是/否,返回值yes/no
tkinter.messagebox.askquestion('提示', '确定要登录吗')
#确定/取消,返回值true/false
tkinter.messagebox.askokcancel('提示', '确定删除文件吗?')
#是/否,返回值true/false
tkinter.messagebox.askyesno('提示', '确定保存密码吗?')
#重试/取消,返回值true/false
tkinter.messagebox.askretrycancel('提示', '要执行此操作吗')
# 2.程序一直循环,直到我们关闭窗口
root.mainloop()
弹窗,按钮,标签联动
代码语言:javascript复制from tkinter import *
# tkinter的消息框是由tkinter.messagebox 单独提供的
# 所以导入的时候一定得加上一行import tkinter.messagebox 才可以。
import tkinter.messagebox
# 1.创建一个主窗口
root = Tk()
# 2.添加标题
root.title("窗口程序")
# 3.设置窗口大小 宽400 高200
root.geometry("400x200")
# 4.设置背景色
root.config(bg="lightblue")
# 设置一个字符变量,tkinter自带的
var_name = StringVar()
# 设置变量的初始值
var_name.set("hello world")
# 这里将原来的text改成了textvariable了,然后等于var_name,这样内容就可以改变了
label = Label(root, textvariable=var_name)
label.pack()
# 定义方法
def change_content():
# 更改标签内容
choice = tkinter.messagebox.askokcancel('提示', '确定修改吗?')
if choice:
var_name.set("python")
tkinter.messagebox.showinfo(
'提示', '修改成功')
else:
tkinter.messagebox.showinfo(
'提示', '你已取消修改')
# 创建按钮以及绑定更改内容的方法
button = Button(text="改变内容", command=change_content)
button.pack()
# 程序一直循环,直到我们关闭窗口
root.mainloop()
点击按钮后
点击确定后
点击取消后
其它控显示和联动原理都类似,这里就不一一介绍了,感兴趣可以自己看我之前写的tkinter 的课程(讲了基本控件的使用以及布局等各种方法)。
前面的案例可以看到,每要添加一个控件,就需要通过代码创建并布局到窗体上,如果控件非常多,且要求布局好看一些,比如下面这种(好像控件也不多),
需要写下面这么多代码才能实现一个界面效果,并且只是一个空壳,没有任何的功能代码。
代码语言:javascript复制from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
root = Tk()
# 分成左右两个框架
frame_l = Frame(root, )
frame_l.pack(side=LEFT)
frame_r = Frame(root,)
frame_r.pack(side=RIGHT)
# 给左边框架添加一个Listbox控件
l = Listbox(frame_l, width=30, height=30)
l.pack()
# 给右边框架分成上中下三部分
frame_r_t = Frame(frame_r)
frame_r_t.pack()
frame_r_m = Frame(frame_r)
frame_r_m.pack()
frame_r_b = Frame(frame_r)
frame_r_b.pack()
# 给上面部分添加Listbox
l = Listbox(frame_r_t, width=70, height=18)
l.pack()
# 给中间部分添加Listbox
l = Listbox(frame_r_m, width=70, height=9)
l.pack()
# 给下面部分添加按钮
b = Button(frame_r_b, text="发送", width=10, height=2)
b.pack()
mainloop()
是不是感觉特别麻烦,布局多了,你会觉得这个简直就是个苦差事。
要是有下面这种可拖拽的界面设计工具,那么界面的设计问题就很容易解决了。
很可惜 tkinter 没有自带的界面设计工具,当然有些非常厉害的人,可能自己设计了类似界面的设计工具。
如果你平时做的都是一些简单的界面工具,可以使用tkinter,非常简单。
要是做的界面比较复杂,
建议使用界面设计工具,不过需要学习其它的GUI库,也就是我们后面要介绍的Qt,PyQt5或者PySide2。
好了,今天就到这里结束啦。
(全文完)
欢迎转载,转载请注明出处! 欢迎关注公众微信号:叶子陪你玩编程