pyqt创建窗口没有句柄_你要的 Python 创建 GUI 用户界面程序,来咯

时不时就有 b 友让我整点

“Python GUI 相关的教程”

今天小帅b就来给你说道说道

5f5e7bb575e5f9d21adc5ba5a4aa29db.gif

用 Python 来写 GUI 的库有好几个

比如 pyqt、wxpython、tkinter、kivy

相对来说

比较常用的是 tkinter

它是 Python 内置的库

用起来比较 “直接了当”

是这样的

TK 是一个开源的开发工具包

里面提供了很多界面组件的接口

比如按钮、选项框、输入框这些

而且这些组件是跨平台的

在不同的操作系统中都可以运行

比如你常见的 MacOS,Linux,Windows

ad43fbbcde933695b200af9a1920f615.gif

既然如此

Python 就把这些接口调起来

封装成函数和类

然后整成 tkinter 模块

这样当我们想要写 GUI 的时候

直接使用 Python 调用 tkinter 就好了

fb3fa4606623b84cb256135b73bc3771.png

在你的终端里面输入

“python -m tkinter”

beff2b6b5ed3927c8a5f1fd50fa9552b.gif

出现类似的窗口

说明你的 tkinter 和 tk

都给安装上了

那么如何玩 tkinter 呢

接下来就是

学习 Python 的正确姿势

235865cb20c42ed0a5efb2bb909ac718.png

组件的使用

我先把一些常用的

组件操作给你介绍一下

首先我们导入 tkinter

然后调用 Tk 方法

2097a7783e6ae5e4ba81521d10b8fc99.png

运行就可以得到一个窗口

155b9e55c8268cededf7f0ac9a63731f.png

样式与你的系统类型相关

其中我们调用了 mainloop 方法

主要是让它去循环等待用户的交互

定义窗口的标题

11f311f38801e800e41cbe66a1ea0164.png

窗口的高宽是根据

组件的大小相对而定的

这样能在不同的系统中

比较好的运行

当然,你也可以

使用 geometry

自己指定窗口的宽高

cae9682d8534bf4a1161484f7206a972.png

tkinter 把不同的组件

都封装成了 Class

比如想要往里加入文本

就可以使用 Label 对象

5e42ddd4f563fb05485a45a5de0b75cc.png

这里创建了一个 Label 小组件

然后用 pack 塞到窗口中去

每个组件都有一些属性可以设置

比如这里可以设置常用的宽高字体颜色

fa214c0a1945b2ca889fa606510d5e44.png

加个骚骚的按钮

4e749f5d05c4d454e6cb8bdcf096314d.png
07d6358096efad5de9539023102f461d.png

按钮可以定义点击事件

比如你想当点击按钮的时候

调用方法来修改 Lable 里面的内容

可以使用 command 来绑定回调函数

05ee6f9819c804a963aeddaf2d138c81.png

运行一波

02e761832232f0907c2047a12927c7e7.gif

添加文本输入框

可以使用 Entry 对象

87eb660d469c8039a60eb92eea10b7a9.png

可以通过 entry 的 get 方法

获取输入的值

比如我们要让用户输入名称

然后点击按钮

把文字变成“xxx,你被绿了”

就可以这样

d390dfd423f1453d930a5f5d6e40f67e.png

这里主要是将输入的内容

作为 name 参数传给 change_label 方法

3fab86dee0726b788a20bfa9403ba2d9.gif

其它需要点击的组件

使用方式和 Button 差不多

添加单选

RadioButton

9e870cbd149bc032557f41ae0cced350.png

添加下拉选择框

使用 Combbox

这个需要导入 ttk

f55ba1b18a1c1a8e2ba64c1b8141f841.png
9afccea8efa953695c6ec58c21f5aad7.gif

多选框

CheckButton

ee75ede63959dac4be6560372ac145e1.png

弹窗

messagebox

让它点击按钮的时候弹窗

可以这样

c5ebb6e6660a8e9a928da01af39e1931.png
861b233ccf3a7d3bd4e5ac6cee49ffca.gif

除了 showinfo 之外

show 警告和错误

93227ec2d5adac286d25690cd40dcb08.png

比如显示警告

749845cef7bfcb512040aa848ad74c20.png

还可以用疑问的方式展示

d45f1f533a8e6872ebfa0a085db065f9.png

比如 askquestion

e620fc8e6e0e211f7ce066ddc4372467.png

长文本

Text

0d7ca0aaa5ab0d139a7071d7bf14c5ce.png

获取 Text 的内容

af7383ccbba51fedc6c498bf0f3e6d05.png

其中 get 可以传入两参数

一个是想要获取的行数

一个是想要获取该行中的位置

使用 tk.END 可以获取全部

组件的布局

刚刚的布局有点乱

可以在组件 pack 的时候

设置参数来控制组件的位置

fb723967db8879578e5af892cc9ae334.png

这里用 side 指定位置

padx 来指定边距

一般来说

窗口如果有多个组件

会先定义 Frame 来先布局

Frame 也是一个组件

它可以填充其它组件进来

比如我们可以把

刚刚的窗口

10e51bfc1c9df35660964abcf409a2c5.png

分成 5 个 Frame

6dc2331a586ca40dd168550b1eb8618b.png

这里将不同的组件填充到

相应的 Frame 中

每个 Frame 设置的间隔为 5

1481d51e89e352b4b5dde2de1a494e79.png

另一种比较常用的布局方式是

使用 grid()

你可以把窗口看成是一个

多行多列的表格

比如我们想把刚刚窗口的 5 个 Frame

划分成

f4
f2
f1
f3
f5

那么就可以这样

4488aa0e4a0f9248c1c6577f961afb08.png

通过 grid 去指定 frame 的

具体在第几行第几列

其中 sticky 可以控制

组件的对其方向

pad 控制间距

你还可以通过

rowconfigure 和 columnconfigure

来控制单元格之间的大小

ecb854ef3dbbd7fa869d2f0b36ed8d33.png

一种更好的方式

可以用面向对象的方式

来使用 tkinter 写 GUI

像以下这样

在类方法中定义组件和事件

d128b10193ff7442df93e12a2fa33092.png

ok,以上

你可以自己去写点界面玩玩

当然了

我在这里只是介绍一些常用组件的使用

大多组件的使用方式都差不多

更多的组件和使用细节可以参考

https://docs.python.org/3/library/tk.html

哦对了

之前在 VIP 简单写了下聊天室的实现

用的也是 tkinter

f00f079b899d4158c1ce8c9f27dc247a.gif

感兴趣可以百度【通往python高手之路】了解

那么,我们下回见

peace

点赞评论

你我同在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值