详解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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
Django中的Model操作表的实现
Jul 24 Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
Python datetime包函数简单介绍
Aug 28 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
Python中的None与 NULL(即空字符)的区别详解
Sep 24 Python
python中类与对象之间的关系详解
Dec 16 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获取地址栏信息的代码
2008/10/08 PHP
php 安全过滤函数代码
2011/05/07 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
js null,undefined,字符串小结
2010/08/21 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
js微信支付实现代码
2016/12/22 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
班长竞选演讲稿
2014/04/24 职场文书
2014年创卫工作总结
2014/11/24 职场文书
高中开学感言
2015/08/01 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
Python中的 No Module named ***问题及解决
2022/07/23 Python