084-pyqt-pysid2(计算器)

摘要:

前面介绍了前面介绍了部分qt知识,其中ui文件,在用python和c++时差别不大。但也有一些,比如在c++的ui文件下可以右键直接转到槽函数。在python里没这功能(可能是因为我不熟悉)。程序的执行操作如下,先创建.py文件,然后创建.ui文件,并在里面进行拖拽布置界面。回到.py文件加载.ui文件。例如设置了一个按钮,点击后执行一个函数,把计算结果显示到一个窗口,可以通过self.pushButton.clicked.connect(self.addfunction)设置pushButton按钮触发addfunction,把函数结算结果通过setText显示到textEdit_3。

【0】安装pysid2

pip install pyside2

pip install pyside2 -i https://pypi.douban.com/simple/

 

【1】

用QT的术语来解释上面这行代码,就是:把 button 被 点击(clicked) 的信号(signal), 连接(connect)到了 handleCalc 这样的一个 slot上。大白话就是:让 handleCalc 来 处理 button 被 点击的操作。

【2】

转自http://www.python3.vip/tut/py/gui/qt_03/

# 从 UI 定义中动态 创建一个相应的窗口对象

# 注意:里面的控件对象也成为窗口对象的属性了

# 比如 self.ui.button , self.ui.textEdit

self.ui = QUiLoader().load('main.ui')

self.ui.button.clicked.connect(self.handleCalc)

【3】创建工程步骤

(1)创建.py文件

(2)创建.ui文件

(3)这俩文件在一个步骤的话,就可以用 uic.loadUiType('mainwindow.ui')方法加载.ui文件了。

(4)空间名字如图所示,在下面的代码中对应。

 

【4】计算器例子,其中

(1)pushButton,textEdit_2,textEdit,textEdit_3都是在qt designer中拖拽出的控件的名字。

(2)pushButton触发函数addfunction。

(3)addfunction函数中通过toPlainText获取textEdit_2,textEdit内容,然后执行相加操作,

最后通过setText,设置textEdit_3所显示内容。

 

 

 

转自https://www.jianshu.com/p/bb5cb2b21165

#绿色字体部分可以看做是固定的格式部分。

----------------------------------------------------------------------------------------------------------

import sys
from PyQt5 import uic, QtWidgets

(form_class, qtbase_class) = uic.loadUiType('mainwindow.ui')

class MainWindow(form_class, qtbase_class):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)

        #【1】定义按钮所触发的函数
        self.pushButton.clicked.connect(self.addfunction)
    #【2】定义按钮所触发的函数
    def addfunction(self):

        #【2.1】把textEdit输入的内容赋值给a b,相加后得c
        a = float(self.textEdit.toPlainText())
        b = float(self.textEdit_2.toPlainText())
        c = a + b

        #【2.2】把c显示到textEdit_3
        self.textEdit_3.setText(str(c))
        self.textBrowser.append("%.2f + %.2f = %.2f" % (a, b, c))
        
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ui = MainWindow()
    ui.show()
    sys.exit(app.exec_())

-------------------------------------------------------------------------------------------------------------------

import sys
from PyQt5 import uic, QtWidgets

(form_class, qtbase_class) = uic.loadUiType('mainwindow.ui')

class MainWindow(form_class, qtbase_class):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.pushButton.clicked.connect(self.addfunction)

    def addfunction(self):
        a = float(self.textEdit.toPlainText())
        b = float(self.textEdit_2.toPlainText())
        c = a + b
        self.textEdit_3.setText(str(c))
        self.textBrowser.append("%.2f + %.2f = %.2f" % (a, b, c))

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ui = MainWindow()
    ui.show()
    sys.exit(app.exec_())

 

 

 

【4】布局 

选中后可右键选择布局。从小到大。

也可以点击下图位置进行布局

【5】把pyqt5------->转换成pysid2(据说这个是qt官方搞出来的,以后的支持会越来越好),改的时候有一个报错,把几个dll库换了个位置就可以了、

import sys
from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader


class Stats:
    def __init__(self):
        self.ui = QUiLoader().load('mainwindow.ui')

        self.ui.pushButton.clicked.connect(self.addfunction)

    def addfunction(self):
        a = float(self.ui.textEdit.toPlainText())
        b = float(self.ui.textEdit_2.toPlainText())
        c = a + b
        self.ui.textEdit_3.setText(str(c))
        self.ui.textBrowser.append("%.2f + %.2f = %.2f" % (a, b, c))


app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec_()
【6】打包(转载自http://www.python3.vip/tut/py/gui/qt_04/

(1)

pyinstaller 文件名.py --noconsole --hidden-import PySide2.QtXml

 

这样就会在当前目录下产生一个名为 dist 的目录。里面就有一个名为 httpclient 的目录,我们的可执行程序 httpclient.exe 就在里面。

其中

--noconsole 指定不要命令行窗口,否则我们的程序运行的时候,还会多一个黑窗口。 但是我建议大家可以先去掉这个参数,等确定运行成功后,再加上参数重新制作exe。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。

--hidden-import PySide2.QtXml 参数是因为这个 QtXml库是动态导入,PyInstaller没法分析出来,需要我们告诉它。

(2)把.ui文件复制到dist里也,然后点击里面的.exe就可以运行了。

给别人用的时候,只需要给她dist的压缩包即可。

【7】添加主窗口图标

我们程序运行的窗口,需要显示自己的图标,这样才更像一个正式的产品。

通过如下代码,我们可以把一个png图片文件作为 程序窗口图标。

from PySide2.QtGui import  QIcon

app = QApplication([])
# 加载 icon
app.setWindowIcon(QIcon('logo.png'))

注意:这些图标png文件,在使用PyInstaller创建可执行程序时,也要拷贝到程序所在目录。否则可执行程序运行后不会显示图标。

【8】应用程序图标

可以在PyInstaller创建可执行程序时,通过参数 --icon="logo.ico" 指定。比如

pyinstaller httpclient.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico"

【9】单选框可选择布局,进行分割。或放到gropbox

【10】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值