详解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获取apk文件URL地址实例
Nov 01 Python
Python fileinput模块使用实例
May 28 Python
Python抓取百度查询结果的方法
Jul 08 Python
python 编程之twisted详解及简单实例
Jan 28 Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 Python
Python的多维空数组赋值方法
Apr 13 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
12个Python程序员面试必备问题与答案(小结)
Jun 24 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
django基础学习之send_mail功能
Aug 07 Python
python 模拟登陆163邮箱
Dec 15 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
终于听上了直流胆调频
2021/03/02 无线电
linux下 C语言对 php 扩展
2008/12/14 PHP
php备份数据库类分享
2015/04/14 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
Python 元类使用说明
2009/12/18 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
Python语法分析之字符串格式化
2019/06/13 Python
Django多数据库的实现过程详解
2019/08/01 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
浅谈django 重载str 方法
2020/05/19 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
测控技术与仪器个人求职信范文
2013/12/30 职场文书
幼儿园新年寄语
2014/04/03 职场文书
2014年党支部学习材料
2014/05/19 职场文书
助学感谢信范文
2015/01/21 职场文书
礼仪培训心得体会
2016/01/22 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
Oracle 触发器trigger使用案例
2022/02/24 Oracle