详解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通过yield实现数组全排列的方法
Mar 18 Python
Python实现的多线程http压力测试代码
Feb 08 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
Python气泡提示与标签的实现
Apr 01 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
深入了解python列表(LIST)
Jun 08 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
如何教少儿学习Python编程
Jul 10 Python
Python txt文件如何转换成字典
Nov 03 Python
Django中ORM的基本使用教程
Dec 22 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
vue实现文件上传功能
2018/08/13 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
Python中input和raw_input的一点区别
2014/10/21 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
Python实现区域填充的示例代码
2021/02/03 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
村班子对照检查材料
2014/08/18 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
家长学校教学计划
2015/01/19 职场文书
素质拓展训练感想
2015/08/07 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers