详解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实现删除Android工程中的冗余字符串
Jan 19 Python
Python中用Decorator来简化元编程的教程
Apr 13 Python
python实现手机通讯录搜索功能
Feb 22 Python
python实现百度语音识别api
Apr 10 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
Python3爬虫学习入门教程
Dec 11 Python
Python高级特性与几种函数的讲解
Mar 08 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
使用Pytorch搭建模型的步骤
Nov 16 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
解析PHP 5.5 新特性
2013/07/02 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
express express-session的使用小结
2018/12/12 Javascript
three.js实现圆柱体
2018/12/30 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
django删除表重建的实现方法
2019/08/28 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
wxPython实现文本框基础组件
2019/11/18 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
实习教师自我鉴定
2013/09/27 职场文书
英语自荐信范文
2013/12/11 职场文书
护理个人求职信范文
2014/01/08 职场文书
党员学习十八大感想
2014/01/17 职场文书
承办会议欢迎词
2014/01/17 职场文书
合作投资意向书
2014/04/01 职场文书
文体活动总结范文
2014/05/05 职场文书
主题团日活动总结
2014/06/25 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
javascript之Object.assign()的痛点分析
2022/03/03 Javascript