吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1709|回复: 18
收起左侧

[学习记录] GUI(图形用户界面)之Tkinter实现

  [复制链接]
paypojie 发表于 2022-11-6 13:53
本帖最后由 paypojie 于 2022-11-8 10:43 编辑

                                                       非常简单的GUI程序
[Python] 纯文本查看 复制代码
# 前言 想法与写法是不同的 先想后写(先想再写) 想法与写法是相反的  在想如何写代码的时候 应该先想如何写功能代码(变量名后面的代码部分)
# 然后 再想如何起变量名 给变量起一个见名知意的名字 在写代码的时候 应该先写已经起好的变量名 然后写等于号 最后再写功能代码(变量名后面的代码部分) 

# 使用python创建gui(用户图形界面)程序 第一步 先导入python自带的tkinter库 因为是自带的 所以不需要额外安装 直接使用就可以了 使用自带的非常方便
# 下面被注释掉的三行代码创建了一最简单的图形用户界面程序 将这三行代码去掉注释 发现执行这三行代码后弹出一个矩形的GUI界面 这个界面非常简洁 与其说简洁 不如说简单 
# 只有三个步骤是固定的步骤 也是必须要写的 分别是 1.导入tkinter模块 2.创建主窗口(也可以称做根窗口)3.使用mainloop()方法进入消息循环让主窗口一直处于显示状态

# import tkinter 
# t = tkinter.Tk()
# t.mainloop()

# 让我来回忆一下 创建一个最简单的Tkinter程序的四个部分 C语言网背下来的

# 导入tkinter模块                                import tkinter 
# 创建一个主窗口 也称为root窗口 (也称为根窗口)    root_window = tkinter.Tk()
# 创建人机交互控件 并编写相应的事件响应函数         这一部分不是固定的 
# 使用mainloop()方法显示主窗口                    root_window.mainloop()


# 导入模块
import tkinter

# 创建一个主窗口 使用tkinter模块的TK()方法
main_window = tkinter.Tk()

# 更改左上角的icon图标 需要注意的是不能使用png svg格式的图标 需要使用格式为ico的图标 图片路径前请加r 要不然会报错
main_window.iconbitmap(r"C:\Users\33943\Pictures\Camera Roll\python.ico") 

# 给主窗口起一个名字 就叫做Python 这一行代码也可以不写 不写的话 主窗口的顶部就不会显示标题Python
main_window.title('Python')

# 设置主窗口的大小 使用geometry()方法 传入参数'宽x高'
main_window.geometry('900x500')

# 设置主窗口的背景颜色 颜色值可以是英文单词 也可以是十六进制数  我填的是十六进制数
main_window['background'] = '#F0F0F0' # 背景颜色无变化 因为我用取色器取了主窗口的原始颜色

# 将文本内容添加到主窗口 先定义一个变量保存文本的设置 参数分别是主窗口名 文本text 字体背景色 字体前景色 字体大小和字体类型 也可以不用传递这么多参数
text = tkinter.Label(main_window,text="Hello World",bg="white",fg="black",font=('Times', 20,'bold','italic'))

# 将文本内容放在主窗口内
text.pack()

# 将一个按钮添加到主窗口里面 先使用tkinter模块的Button()方法 参数依次填主窗口 按钮的文本内容 以及cmmmand参数设置关闭窗口的功能 再对按钮使用pack()方法
button = tkinter.Button(main_window,text='关闭',command=quit)

# 添加按钮和添加文本到主窗口的方法类似 只不过 这个pack()方法传入了参数 
button.pack(side='bottom') # 不传递参数 按钮默认会在底部 我们传递参数 side='bottom' 让按钮位于底部

# 对主窗口main_main_window使用mainloop()方法 如果不使用此方法 不会显示窗口 要让窗口持续显示 使用mainloop这个主方法 随即进入消息循环
main_window.mainloop()

# 在cmd下或者vscode下或者IDLE下 运行之后 如果把相应对应的cmd或者vscode或者IDLE 给关闭 那么GUI界面也随即关闭 
# 因为依赖于python解释器 如果想要不依赖解释器 独立的在桌面运行 该怎么办呢 很简单 将xxx.py改名为xxx.pyw 就是将后缀名py改名pyw 然后双击 就可以显示GUI程序了
# 或者在cmd中输入 pythonw.exe '绝对文件路径' 例如 pythonw "C:\Users\33943\测试.pyw" 这是我自己本地的pyw文件路径 发现显示GUI界面后 关闭cmd 照样能够显示界面

# 参考链接 http://c.biancheng.net/tkinter/ https://www.cnblogs.com/shwee/p/9427975.html#B

运行截图
image.png
运行截图
image.png

本人学习所参考的网站链接 第一个网站是我目前主要看的 第二个网站还没看多少

http://c.biancheng.net/tkinter/  https://www.cnblogs.com/shwee/p/9427975.html#B



更新代码 增加了一些方法
[Python] 纯文本查看 复制代码
# 导入模块
import tkinter

# 创建一个主窗口 使用tkinter模块的TK()方法
main_window = tkinter.Tk()

# 更改左上角的icon图标 需要注意的是不能使用png svg格式的图标 需要使用格式为ico的图标 图片路径前请加r 要不然会报错
main_window.iconbitmap(r"C:\Users\33943\Pictures\Camera Roll\python.ico") 

# 给主窗口起一个名字 就叫做Python 这一行代码也可以不写 不写的话 主窗口的顶部就不会显示标题Python
main_window.title('Python')

# 设置主窗口的大小 使用geometry()方法 传入参数'宽x高'
main_window.geometry('900x500')

# 设置主窗口的背景颜色 颜色值可以是字符串形式的英文单词 也可以是字符串形式的十六进制数  我填的是十六进制数
# 两种方法修改主窗口背景色 第一种 主窗口['background'] = '颜色值' 主窗口.config(background='颜色值')
main_window['background'] = '#F0F0F0' # 背景颜色无变化 因为我用取色器取了主窗口的原始颜色
main_window.config(background='white') # 修改背景颜色 背景颜色发生改变 变成了白色

# 主窗口的resizable()方法 设置是否允许用户拉伸主窗口大小 当传入两个0或者F两个alse的时候 就不允许调整主窗口大小
# main_window.resizable(False,False) # 默认是允许用户调整主窗口大小的 注释掉这行代码 不让其执行

# 将文本内容添加到主窗口 先定义一个变量保存文本的设置 参数分别是主窗口名 文本text 字体背景色 字体前景色 字体大小和字体类型 也可以不用传递这么多参数
text = tkinter.Label(main_window,text="Hello World",bg="white",fg="black",font=('Times', 20,'bold','italic'))

# 将文本内容放在主窗口内
text.pack()

# 将一个按钮添加到主窗口里面 先使用tkinter模块的Button()方法 参数依次填主窗口 按钮的文本内容 以及cmmmand参数设置关闭窗口的功能 再对按钮使用pack()方法
button = tkinter.Button(main_window,text='关闭',command=quit)

# 添加按钮和添加文本到主窗口的方法类似 只不过 这个pack()方法传入了参数 
button.pack(side='bottom') # 不传递参数 按钮默认会在底部 我们传递参数 side='bottom' 让按钮位于底部

# 获取电脑屏幕的尺寸 (电脑的大小) 并将此输出 对主窗口分别使用winfo_screenwidth()和winfo_screenheight()方法
print('电脑屏幕的大小为%sx%s' % (main_window.winfo_screenwidth(),main_window.winfo_screenheight()))

# 在获取窗口的大小之前 必须先刷新一下主窗口 假如不写这行代码 那么就会获取到一个错误的结果
main_window.update()

print('窗口的大小为%sx%s' % (main_window.winfo_width(),main_window.winfo_height()))

# 让窗口处于顶层 使用attributes()函数 传入一个字符串形式的参数和True 这行代码视乎没起到什么效果
main_window.attributes('-topmost',True)

# 设置窗口的透明度 同样用attributes()函数 传入一个字符串形式的参数和一个范围在0到1之间的数值 值越小越趋向于透明 值越大越趋向于不透明 0完全透明 1完全不透明
main_window.attributes('-alpha',0.9)

# 设置窗口的最大调整范围 与resize()方法会发生冲突
main_window.maxsize(1000,600)

# 设置窗口的最小调整范围
main_window.minsize(800,400)

# 对主窗口main_main_window使用mainloop()方法 如果不使用此方法 不会显示窗口 要让窗口持续显示 使用mainloop这个主方法 随即进入消息循环
main_window.mainloop()


免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yg226 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

肖飞 发表于 2022-11-6 13:58
学到了 谢谢
 楼主| paypojie 发表于 2022-11-6 14:00
likezqc 发表于 2022-11-6 14:23
头像被屏蔽
洛枫 发表于 2022-11-6 15:40
提示: 作者被禁止或删除 内容自动屏蔽
努力的笨蛋 发表于 2022-11-6 16:17
我都快被这布局逼疯了,项做的好看点太难了
258239234 发表于 2022-11-6 16:24
编写的很好,多谢分享!
 楼主| paypojie 发表于 2022-11-6 17:15

不用谢 (*^▽^*)
 楼主| paypojie 发表于 2022-11-6 17:16
洛枫 发表于 2022-11-6 15:40
有可视化拖拽工具可以直接用的,不用手撕UI:
http://xfxuezhang.cn/web/tkinter-helper/

都行 实现功能就ok了
 楼主| paypojie 发表于 2022-11-6 17:17
努力的笨蛋 发表于 2022-11-6 16:17
我都快被这布局逼疯了,项做的好看点太难了

设计布局的话 确实不容易
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-15 04:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表