一个简单的例子

来源

http://www.python3.vip/tut/py/gui/qt_02/

从一个案例开始

现在,我们要开发一个程序,这个程序很简单:让用户输入一段文本包含:员工姓名、薪资、年龄

格式如下:

员工姓名	薪资	年龄
薛蟠     4560 25
薛蝌     4460 25
薛宝钗   35776 23
薛宝琴   14346 18
王夫人   43360 45
王熙凤   24460 25
王子腾   55660 45
王仁     15034 65
尤二姐   5324 24
贾芹     5663 25
贾兰     13443 35
贾芸     4522 25
尤三姐   5905 22
贾珍     54603 35

我们的程序的作用: 当用户输入这些信息之后,我们的程序需要把薪资在 2万 以上、以下的人员名单分别打印出来。

分析

第一种方法

当然我们可以像以前一样,开发命令行程序(准确的说应该叫字符终端程序,因为UI是字符终端),让用户在字符终端输入。

第二种方法

但是如果我们能开发下面这样的图形界面程序,就更酷了

在这里插入图片描述

使用QT开发的可行性

是否可行?

能开发出这样的界面吗?

具体实现

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton,  QPlainTextEdit

app = QApplication([])

window = QMainWindow()
window.resize(500, 400)
window.move(300, 310)
window.setWindowTitle('薪资统计')

textEdit = QPlainTextEdit(window)
textEdit.setPlaceholderText("请输入薪资表")
textEdit.move(10,25)
textEdit.resize(300,350)

button = QPushButton('统计', window)
button.move(380,80)

window.show()

app.exec_()

运行程序

现在,代码已经全部输入了

在这里插入图片描述
【Ctrl】+【shift】+【F10】,运行这个py文件

然后就出现了这个界面
在这里插入图片描述
当然,这个程序的功能还没有来得及实现,不过界面已经创建完毕了!

代码详细的分析

代码分析

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton,  QPlainTextEdit
# QtWidgets是PySide2中一部分的内容,它专门负责带有控件的窗口
# QApplication:应用程序
# QMainWindow:主窗口
# QPushButton:按钮
# QPlainTextEdit:纯文本的编辑框


app = QApplication([])  # 实例化一个对象
# QApplication提供了整个图形界面程序的底层管理功能
# 比如:初始化、程序入口参数的处理,用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件,等等…
# 初始化:为了图形用户界面,它需要初始一些资源,操作系统要申请一些资源的处理
# 用户事件:用户对界面的点击、输入、拖拽,这些都是属于用户事件,它需要把这些事件分发给各个控件
# 比如说你在哪个区域点击的,这个区域属于哪个控件管理
"""因为QApplication需要做这么多重要的操作,所以我们必须在任何界面控件对象创建前,先创建它。
至于这里面的参数,我们可以先填一个空值"""


"""主窗口对象"""
window = QMainWindow()
# 创建一个主窗口对象
# 注意:直到目前为止的创建都还没有显示在界面上,只是我们先把即将要显示在界面上的主窗口先申请一下,先定义一下它的外观和其他的几个属性,但是代码执行到现在为止,还没有生成这个主窗口对象显示在界面上


window.resize(800, 600)
# 决定了这个主窗口对象的大小
# (宽度,高度)单位:px,例如:(500,400)表示:宽度:500px,高度:400px

window.move(1000, 110)
# 控制这个主窗口待会在显示的时候会出现在用户的显示器的什么位置
# 具体算法是程序的左上角和显示器的左上角的相对位置
# (在x轴上的距离,在y轴上的距离)单位:px

window.setWindowTitle('薪资统计')
# window.setWindowTitle(string)表示:将string中的内容设置在程序的标题栏上

"""纯文本输入的控件"""
textEdit = QPlainTextEdit(window)
# 实例化一个对象
# QPlainTextEdit:纯文本的控件
# 参数:window  表示指定我们当前控件的副窗口是window,也就是在副窗口上创建这个控件
# 简单说就是在主窗口对象上创建一个纯文本输入的区域


textEdit.setPlaceholderText("请输入薪资表")
# 这个控件的方法叫做:setPlaceholderText
# setPlaceholderText(string):就是在这个纯文本输入的控件中我们预先定义好的具有提示性语言的文本,其中string为提示性文本的内容
# 这块区域中没有输入内容:显示提示性文本
# 这块区域中我们输入了内容:显示我们输入的内容,提示性文本自动消失

textEdit.move(30,50)
# 设置这块区域在整个主窗口对象中的位置
# 如果说一个控件存在着副窗口,那么这个命令就表示这块区域的左上角和这个副窗口区域的左上角的相对位置
# 因为现在这个控件的副窗口就是我们的主窗口对象
# 所以这段代码在这里表示:这块区域的左上角和整个主窗口左上角的相对位置,其中要注意:这里的主窗口不包括标题栏

textEdit.resize(300,350)
# 指定这个控件区域的大小
# (宽度,高度)单位:px

"""按钮控件"""
button = QPushButton('统计', window)
# 实例化一个按钮对象
# button = QPushButton(按钮上显示什么文本,设置这个控件的副窗口(也就是在这个副窗口区域上创建这个按钮控件))
# 表示:在主窗口对象上创建一个按钮,这个按钮上显示着“统计”这段内容

button.move(380,80)
# 在这里表示这个按钮区域的左上角和整个主窗口的左上角的相对位置
# 因为这个按钮区域的副窗口是整个主窗口

window.show()
# 表示将window展示在界面上

# 注意:到这里程序还没有结束,因为如果没有下一行代码,那这个程序执行到这里就一闪而过就没了

app.exec_()
# 表示:进入了事件处理循环
# 也就是说我们当前的这个带有界面的程序执行到现在的这行代码的时候就说明这个程序一直在循环,等待用户对于这个界面的操作(这其实就是事件),然后它会对用户的事件作出反应
# 注意:这是一个死循环,只要我们不是人为地关闭这个窗口,它是永远也不会退出的
# 注意:这段代码很重要,如果没有这段代码,那么我们的程序一跑到这里就会自动结束,这句才是真正的消息的处理

其中

在这里插入图片描述
在这里插入图片描述

程序的左上角和显示器的左上角的相对位置
在这里插入图片描述

程序的标题栏

在这里插入图片描述

纯文本输入的控件
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

小结

1.导入相关的模块

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton,  QPlainTextEdit

2.实例化一个对象

app = QApplication([])  # 实例化一个对象

3.创建一个主窗口对象,也就是最下层的图层

window = QMainWindow()

4.设置这个创建的主窗口对象的一些属性

window.resize(500, 400)
window.move(300, 310)
window.setWindowTitle('薪资统计')

5.以我们的主窗口对象为最底层的图层,在这个图层之上新建一些控件

textEdit = QPlainTextEdit(window)

button = QPushButton('统计', window)

6.设置这些控件的属性

textEdit.setPlaceholderText("请输入薪资表")
textEdit.move(10,25)
textEdit.resize(300,350)

button.move(380,80)

7.使我们的这个程序在界面上显示出来,一般选择最底层的图层显示

window.show()

8.进入事件循环,用户可以触发事件,然后程序可以对用户的事件作出反应

app.exec_()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值