详解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启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
python迭代器与生成器详解
Mar 10 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
python的pip安装以及使用教程
Sep 18 Python
Django 路由控制的实现
Jul 17 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
Python读写压缩文件的方法
Jul 30 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
分享一个python的aes加密代码
Dec 22 Python
python如何查找列表中元素的位置
May 30 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
构建简单的Webmail系统
2006/10/09 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
JS 显示当前日期与时间的代码
2010/03/24 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
python查看zip包中文件及大小的方法
2015/07/09 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
python添加菜单图文讲解
2019/06/04 Python
python判断自身是否正在运行的方法
2019/08/08 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
机电一体化自荐信
2013/12/10 职场文书
公益活动邀请函
2014/02/05 职场文书
益达广告词
2014/03/14 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
归元寺导游词
2015/02/06 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
养成教育主题班会
2015/08/13 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL
CSS的calc函数用法小结
2022/06/25 HTML / CSS