详解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转换字符串为摩尔斯电码的方法
Jul 06 Python
通过python+selenium3实现浏览器刷简书文章阅读量
Dec 26 Python
Django forms组件的使用教程
Oct 08 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
Python实现DDos攻击实例详解
Feb 02 Python
python3 批量获取对应端口服务的实例
Jul 25 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
解决IDEA 的 plugins 搜不到任何的插件问题
May 04 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 Python
Python实现像awk一样分割字符串
Sep 15 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
php中final关键字用法分析
2016/12/07 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
如何在python中写hive脚本
2019/11/08 Python
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
追悼会子女答谢词
2014/01/28 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
服务承诺书范文
2014/05/19 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android