详解Python Qt的窗体开发的基本操作


Posted in Python onJuly 14, 2019

本文章采用的是Qt4,是python(x,y) 套件中集成的,为啥不集成Qt5呢,懒得装啊:)

正文:

首先看成品:

详解Python Qt的窗体开发的基本操作

这个程序的功能是输入原价和降价的百分比,计算出最后的价格。

设计器部分

然后就是开发阶段了,首先在Qt Designer中建立一个窗体,大概像图片中的样子,然后将控件都拖进去

详解Python Qt的窗体开发的基本操作

其中,“原价是多少啊”,“绿色的标标”这些文字类的控件是QLabel,第一个框框是QTextEdit,第二个标标是QDoubleSpinBox,或者使用QSpinBox都行,两者主要是数字类型的不同,

提交按钮是QPushButton,这里主要是想尝试一下不同的控件,接下来点击在图片框上的QLabel,然后在属性编辑器中将objectName命名为 labelResult ,QTextEdit命名为textPrice,QDoubleSpinBox

命名为dSBPer ,QPushButton命名为btnSub如图:

详解Python Qt的窗体开发的基本操作

详解Python Qt的窗体开发的基本操作

详解Python Qt的窗体开发的基本操作

详解Python Qt的窗体开发的基本操作

这样的命名方式并没有什么特殊含义,只不过能够让鄙人记得更牢一些,以防止程序打到一半来回的看设计器。

这里有个比较麻烦的东西 ------------ 图片框

图片显示本身是QLabel,所以显示图片需要先在设计器中放置一个QLbel控件,改控件在程序中没有改动,所以名字默认就好,接下来还需要在资源管理器中添加资源文件,如图:

详解Python Qt的窗体开发的基本操作

在Qt设计器中,只需在QLabel控件的pixmap属性中载入即可,支持的文件可访问Qt的文档,我会在文章后面贴出

值得注意的是,资源文件在程序中的使用需要编译为.py文件

编译的代码如下:

pyrcc4 -o a1_rc.py a1.qrc

程序部分

现在就开始程序部分的编辑了

第一步先导入有关Qt的库

import sys
from PyQt4 import QtCore,QtGui,uic

然后创建Window初始化

qtCreatorFile = "" #.ui Window File

Ui_MainWindow,QtBaseClass = uic.loadUiType(qtCreatorFile)

接下来是基础类的编写

class MyApp(QtGui.QMainWindow,Ui_MainWindow):
  def __init__(self):
    QtGui.QMainWindow.__init__(self)
    Ui_MainWindow.__init__(self)
    self.setupUi(self)
    self.btnSub.clicked.connect(self.CalculateTax)

其中"self.btnSub.clicked.connect(self.CalculateTax)"中,btnSub是按钮的名称,clicked.connect是按钮的点击事件要执行的函数的连接,CalculateTax是我自己写的点击的函数,他将会在按钮被点击后调用

if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  window = App()
  window.show()
  sys.exit(app.exec_())

这一行在主程序中,是程序执行时显示窗体的操作

接下来就开始写CalculateTax(self)函数了,它放在App类中:

def CalculateTax(self):
    price = int(self.textPrice.toPlainText())
    tax = float(self.dSBPer.value())
    total_price = price-((tax/100)*price)
    total_price_string = u"你要记得你要花多少钱,预计的价格很便宜啊:"+str(total_price) +u"块"+"\n"+u"看到没有,还不快买"
    self.labelResult.setText(total_price_string )

"textPrice.toPlainText()"其中textPrice是控件的名称,toPlainText()是控件的方法,这是获取控件的文本内容,函数具体的详细信息可以在Qt文档中查询,后面控件同理

有一点是在Qt中,如果中文显示乱码,需要将中文转为指定的编码,具体情况需要看程序的编码,在本代码中字符串前加u可直接转码。

# -*- coding: UTF-8 -*-

import sys
from PyQt4 import QtCore,QtGui,uic



qtCreatorFile = "untitled.ui" #Window File

Ui_MainWindow,QtBaseClass = uic.loadUiType(qtCreatorFile)

class App(QtGui.QMainWindow,Ui_MainWindow):
  def __init__(self):
    QtGui.QMainWindow.__init__(self)
    Ui_MainWindow.__init__(self)
    self.setupUi(self)
    self.btnSub.clicked.connect(self.CalculateTax)

  def CalculateTax(self):
    price = int(self.textPrice.toPlainText())
    tax = float(self.dSBPer.value())
    total_price = price-((tax/100)*price)
    total_price_string = u"你要记得你要花多少钱,预计的价格很便宜啊:"+str(total_price) +u"块"+"\n"+u"看到没有,还不快买"
    self.labelResult.setText(total_price_string )
    
    
    
if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  window = App()
  window.show()
  sys.exit(app.exec_())

后面附上Qt官方文档网页:

http://doc.qt.io/qt-5/classes.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的ini文件操作类分享
Nov 20 Python
Python自定义简单图轴简单实例
Jan 08 Python
Python装饰器用法示例小结
Feb 11 Python
Python骚操作之动态定义函数
Mar 26 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
Python列表与元组的异同详解
Jul 02 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
解决Pytorch中关于model.eval的问题
May 22 Python
python中selenium操作下拉滚动条的几种方法汇总
Jul 14 #Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 #Python
Python实现Selenium自动化Page模式
Jul 14 #Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 #Python
python基于Selenium的web自动化框架
Jul 14 #Python
Django项目使用CircleCI的方法示例
Jul 14 #Python
Python实现最常见加密方式详解
Jul 13 #Python
You might like
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
python中import学习备忘笔记
2017/01/24 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
护理专业自荐信
2013/12/03 职场文书
党员批评与自我批评
2014/10/15 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server