详解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 BeautifulSoup库抓取58手机维修信息
Nov 21 Python
Python中的元类编程入门指引
Apr 15 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
Python中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
速记Python布尔值
Nov 09 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
Python网页解析器使用实例详解
May 30 Python
使用openCV去除文字中乱入的线条实例
Jun 02 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
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
详解Python中expandtabs()方法的使用
2015/05/18 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
python 字段拆分详解
2019/12/17 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
安全责任协议书
2014/04/21 职场文书
2014年女职工工作总结
2014/11/27 职场文书
加强党性修养心得体会
2016/01/21 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang