前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python GUI界面设计的那些事(二)

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

作者头像
叶子陪你玩
发布2021-04-13 15:00:32
3.3K0
发布2021-04-13 15:00:32
举报
文章被收录于专栏:叶子陪你玩编程

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。

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

(全文完)


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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档