详解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之玩转字符串(2)更新篇
Sep 28 Python
Python基础入门之seed()方法的使用
May 15 Python
Python切片知识解析
Mar 06 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
详解python数据结构和算法
Apr 18 Python
python实现在一个画布上画多个子图
Jan 19 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
如何学习Python time模块
Jun 03 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
python实现大学人员管理系统
2019/10/25 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
基于matplotlib xticks用法详解
2020/04/16 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
高中生的学习总结自我鉴定
2013/10/26 职场文书
给实习单位的感谢信
2014/02/01 职场文书
小学生检讨书大全
2014/02/06 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
交通违章检讨书
2014/09/21 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL