Python Qt的窗体开发的基本操作

[复制链接]
726|2
手机看帖
扫描二维码
随时随地手机跟帖
gaoyang9992006|  楼主 | 2018-7-31 21:06 | 显示全部楼层 |阅读模式
Python Qt的窗体开发的基本操作
本**采用的是Qt4,是python(x,y) 套件中集成的,为啥不集成Qt5呢,懒得装啊:)

正文:

首先看成品:
1126019-20171214125157748-597221024.jpg
这个程序的功能是输入原价和降价的百分比,计算出最后的价格。

  • 设计器部分
然后就是开发阶段了,首先在Qt Designer中建立一个窗体,大概像图片中的样子,然后将控件都拖进去
1126019-20171214124909717-84537810.jpg

其中,“原价是多少啊”,“绿色的标标”这些文字类的控件是QLabel,第一个框框是QTextEdit,第二个标标是QDoubleSpinBox,或者使用QSpinBox都行,两者主要是数字类型的不同,
提交按钮是QPushButton,这里主要是想尝试一下不同的控件,接下来点击在图片框上的QLabel,然后在属性编辑器中将objectName命名为 labelResultQTextEdit命名为textPrice,QDoubleSpinBox
命名为dSBPer ,QPushButton命名为btnSub如图:
1126019-20171214125548779-1419956841.jpg
1126019-20171214130306373-1809839137.jpg
1126019-20171214130342248-371209046.jpg
1126019-20171214132703998-1363663554.jpg

这样的命名方式并没有什么特殊含义,只不过能够让鄙人记得更牢一些,以防止程序打到一半来回的看设计器。

这里有个比较麻烦的东西 ------------ 图片框
图片显示本身是QLabel,所以显示图片需要先在设计器中放置一个QLbel控件,改控件在程序中没有改动,所以名字默认就好,接下来还需要在资源管理器中添加资源文件,如图:

1126019-20171214131536310-697055806.jpg




相关帖子

gaoyang9992006|  楼主 | 2018-7-31 21:08 | 显示全部楼层
在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可直接转码。

使用特权

评论回复
gaoyang9992006|  楼主 | 2018-7-31 21:08 | 显示全部楼层
# -*- 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_())
   

全部代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1888

主题

15607

帖子

197

粉丝