详解Python Qt的窗体开发的基本操作
作者:大盗梁 发布时间:2021-03-28 00:58:12
本文章采用的是Qt4,是python(x,y) 套件中集成的,为啥不集成Qt5呢,懒得装啊:)
正文:
首先看成品:
这个程序的功能是输入原价和降价的百分比,计算出最后的价格。
设计器部分
然后就是开发阶段了,首先在Qt Designer中建立一个窗体,大概像图片中的样子,然后将控件都拖进去
其中,“原价是多少啊”,“绿色的标标”这些文字类的控件是QLabel,第一个框框是QTextEdit,第二个标标是QDoubleSpinBox,或者使用QSpinBox都行,两者主要是数字类型的不同,
提交按钮是QPushButton,这里主要是想尝试一下不同的控件,接下来点击在图片框上的QLabel,然后在属性编辑器中将objectName命名为 labelResult ,QTextEdit命名为textPrice,QDoubleSpinBox
命名为dSBPer ,QPushButton命名为btnSub如图:
这样的命名方式并没有什么特殊含义,只不过能够让鄙人记得更牢一些,以防止程序打到一半来回的看设计器。
这里有个比较麻烦的东西 ------------ 图片框
图片显示本身是QLabel,所以显示图片需要先在设计器中放置一个QLbel控件,改控件在程序中没有改动,所以名字默认就好,接下来还需要在资源管理器中添加资源文件,如图:
在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
来源:https://www.cnblogs.com/heylk/p/8037124.html


猜你喜欢
- 南京的炎炎夏日也未能挡住书友会朋友们的参与,下午两点半我们正式开始了这个月的话题:“浏览器”。一开始大家大致上说了一些自己认为各浏览器中各自
- javascript单线程JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及
- 我们在上传大文件时,可能会由于服务器的原因导致文件上传失败,文件过大时由于服务器的配置或响应事件过长导致上传文件失败,这时候我们可以将一个大
- 现在假如要写一个按照"标题",'内容','作者'等等进行针对性的选择,这时需要涉及到使用
- 装饰器信号与槽所谓装饰器信号与槽,就是通过装饰器的方法来定义信号与槽函数,具体的使用方法如下@PyQt5.QtCore.pyqtSlot(参
- pandas 对于数据分析的人员来说都是必须熟悉的第三方库,pandas 在科学计算上有很大的优势,特别是对于数据分析人员来说,相当的重要。
- 在golang中,网络协议已经被封装的非常完好了,想要写一个Socket的Server,我们并不用像其他语言那样需要为socket、bind
- 代码如下:<% '功能:取得文件扩展名 Function getFileExt(sFileNam
- 如下所示:logprobs.new_zeros(logprobs.size())pytorch 0.4版本中用到的新建一个与logprobs
- 本文实例讲述了Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能。分享给大家供大家参考,具体如下:由于目前工作
- python输入错误怎么删除?python常用的输入函数raw_input()在输入的过程中如果输错了,不能像在命令行下那样backspac
- 相对于Firefox2来说,Firefox3除了采用全新的Gecko 1.9引擎外,在性能、稳定性和安全性方面进行许多改进,在我们最关心的对
- 本文实例讲述了Python实现动态加载模块、类、函数的方法。分享给大家供大家参考,具体如下:动态加载模块: 方式1:系统函数__import
- 类的私有属性和方法Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的publ
- 概述np.ones()函数返回给定形状和数据类型的新数组,其中元素的值设置为1。此函数与numpy zeros()函数非常相似。用法np.o
- 画矩形函数调用:cv2.rectangle(img,pt1,pt2,color,thickness,line_type,shift)img:
- 写在前面很长一段时间内,我都在研究在线地图的开发者文档,百度地图和高德地图的开发者中心提供了丰富的在线地图服务,虽然有一定的权限限制,但不得
- 本文实例讲述了Django框架中间件(Middleware)用法。分享给大家供大家参考,具体如下:1、面向切面编程切点(钩子)切点允许我们动
- 前言成语填空想必大家都是十分熟悉的了,特别是有在上小学的家长肯定都有十分深刻的印象。在我们的认知里看图猜成语不就是一些小儿科的东西吗?当然了
- 要读懂这些代码主要是要了解ASP中操作二进制数据的对象ADODB.Stream!本程序主要用的就是Adodb.Stream,如果你有这个基础