详解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网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
Python数据结构之图的应用示例
May 11 Python
python 获取url中的参数列表实例
Dec 18 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
python写入文件自动换行问题的方法
Jul 05 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
pip install python 快速安装模块的教程图解
Oct 08 Python
Python+Redis实现布隆过滤器
Dec 08 Python
python 三种方法提取pdf中的图片
Feb 07 Python
python基础之停用词过滤详解
Apr 21 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
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
完美解决js传递参数中加号和&号自动改变的方法
2016/10/11 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
Python中的模块和包概念介绍
2015/04/13 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python+django实现简单的文件上传
2016/08/17 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
Python输出指定字符串的方法
2020/02/06 Python
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
幼儿园实习生辞职信
2014/01/20 职场文书
班组安全员工作职责
2014/02/01 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
中秋节寄语2015
2015/03/24 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
上诉状格式
2015/05/23 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
Python如何使用循环结构和分支结构
2022/04/13 Python