python GUI界面设计的那些事(二)

2021-04-13 15:00:32 浏览数 (1)

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。

好了,今天就到这里结束啦。

(全文完)


欢迎转载,转载请注明出处! 欢迎关注公众微信号:叶子陪你玩编程

0 人点赞