1. 程式人生 > >PyQt5+Qt designer實戰

PyQt5+Qt designer實戰

PyQt5+Qt designer 製作計算器

配置說明:

Anaconda 4.2.0 (64-bit)

Python 3.5.2

首先,在Qt designer裡面設計介面:

開啟 Qt designer後,設計介面如下所示:


儲存為clat.ui。然後將其轉為py檔案:


之後會生產clat.py檔案。

開啟後,程式碼如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'clat.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(746, 455)
        self.widget = QtWidgets.QWidget(Form)
        self.widget.setGeometry(QtCore.QRect(81, 31, 512, 399))
        self.widget.setObjectName("widget")
        self.gridLayout = QtWidgets.QGridLayout(self.widget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.textBrowser = QtWidgets.QTextBrowser(self.widget)
        self.textBrowser.setObjectName("textBrowser")
        self.gridLayout.addWidget(self.textBrowser, 0, 0, 2, 4)
        self.calendarWidget = QtWidgets.QCalendarWidget(self.widget)
        self.calendarWidget.setObjectName("calendarWidget")
        self.gridLayout.addWidget(self.calendarWidget, 1, 4, 1, 2)
        self.lineEdit = QtWidgets.QLineEdit(self.widget)
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 2, 0, 1, 5)
        self.pushButton_19 = QtWidgets.QPushButton(self.widget)
        self.pushButton_19.setObjectName("pushButton_19")
        self.gridLayout.addWidget(self.pushButton_19, 4, 0, 1, 1)
        self.pushButton_17 = QtWidgets.QPushButton(self.widget)
        self.pushButton_17.setObjectName("pushButton_17")
        self.gridLayout.addWidget(self.pushButton_17, 4, 1, 1, 1)
        self.pushButton_18 = QtWidgets.QPushButton(self.widget)
        self.pushButton_18.setObjectName("pushButton_18")
        self.gridLayout.addWidget(self.pushButton_18, 4, 2, 1, 1)
        self.pushButton_1 = QtWidgets.QPushButton(self.widget)
        self.pushButton_1.setObjectName("pushButton_1")
        self.gridLayout.addWidget(self.pushButton_1, 4, 3, 1, 3)
        self.pushButton_14 = QtWidgets.QPushButton(self.widget)
        self.pushButton_14.setObjectName("pushButton_14")
        self.gridLayout.addWidget(self.pushButton_14, 6, 0, 1, 1)
        self.pushButton_15 = QtWidgets.QPushButton(self.widget)
        self.pushButton_15.setObjectName("pushButton_15")
        self.gridLayout.addWidget(self.pushButton_15, 6, 1, 1, 1)
        self.pushButton_16 = QtWidgets.QPushButton(self.widget)
        self.pushButton_16.setObjectName("pushButton_16")
        self.gridLayout.addWidget(self.pushButton_16, 6, 2, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 6, 3, 1, 3)
        self.pushButton_11 = QtWidgets.QPushButton(self.widget)
        self.pushButton_11.setObjectName("pushButton_11")
        self.gridLayout.addWidget(self.pushButton_11, 8, 0, 1, 1)
        self.pushButton_12 = QtWidgets.QPushButton(self.widget)
        self.pushButton_12.setObjectName("pushButton_12")
        self.gridLayout.addWidget(self.pushButton_12, 8, 1, 1, 1)
        self.pushButton_13 = QtWidgets.QPushButton(self.widget)
        self.pushButton_13.setObjectName("pushButton_13")
        self.gridLayout.addWidget(self.pushButton_13, 8, 2, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(self.widget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 8, 3, 1, 3)
        self.pushButton_8 = QtWidgets.QPushButton(self.widget)
        self.pushButton_8.setObjectName("pushButton_8")
        self.gridLayout.addWidget(self.pushButton_8, 9, 0, 1, 1)
        self.pushButton_9 = QtWidgets.QPushButton(self.widget)
        self.pushButton_9.setObjectName("pushButton_9")
        self.gridLayout.addWidget(self.pushButton_9, 9, 1, 1, 1)
        self.pushButton_10 = QtWidgets.QPushButton(self.widget)
        self.pushButton_10.setObjectName("pushButton_10")
        self.gridLayout.addWidget(self.pushButton_10, 9, 2, 1, 1)
        self.pushButton_4 = QtWidgets.QPushButton(self.widget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout.addWidget(self.pushButton_4, 9, 3, 1, 3)
        self.pushButton_7 = QtWidgets.QPushButton(self.widget)
        self.pushButton_7.setObjectName("pushButton_7")
        self.gridLayout.addWidget(self.pushButton_7, 10, 0, 1, 2)
        self.pushButton_6 = QtWidgets.QPushButton(self.widget)
        self.pushButton_6.setObjectName("pushButton_6")
        self.gridLayout.addWidget(self.pushButton_6, 10, 2, 1, 1)
        self.pushButton_5 = QtWidgets.QPushButton(self.widget)
        self.pushButton_5.setObjectName("pushButton_5")
        self.gridLayout.addWidget(self.pushButton_5, 10, 3, 1, 3)
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 2, 5, 1, 1)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton_19.setText(_translate("Form", "退出"))
        self.pushButton_17.setText(_translate("Form", "返回"))
        self.pushButton_18.setText(_translate("Form", "清除所有"))
        self.pushButton_1.setText(_translate("Form", "/"))
        self.pushButton_14.setText(_translate("Form", "7"))
        self.pushButton_15.setText(_translate("Form", "8"))
        self.pushButton_16.setText(_translate("Form", "9"))
        self.pushButton_2.setText(_translate("Form", "*"))
        self.pushButton_11.setText(_translate("Form", "4"))
        self.pushButton_12.setText(_translate("Form", "5"))
        self.pushButton_13.setText(_translate("Form", "6"))
        self.pushButton_3.setText(_translate("Form", "+"))
        self.pushButton_8.setText(_translate("Form", "1"))
        self.pushButton_9.setText(_translate("Form", "2"))
        self.pushButton_10.setText(_translate("Form", "3"))
        self.pushButton_4.setText(_translate("Form", "-"))
        self.pushButton_7.setText(_translate("Form", "0"))
        self.pushButton_6.setText(_translate("Form", "."))
        self.pushButton_5.setText(_translate("Form", "="))
        self.pushButton.setText(_translate("Form", "清除快取"))

然後,新建Run.py檔案,程式碼如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
from count.clat import Ui_Form


class mwindow(QWidget, Ui_Form):
    def __init__(self):
        super(mwindow, self).__init__()
        self.setupUi(self)

    def ps_bt(self):
        self.textBrowser.clear()

    def ps_bt1(self):
        self.lineEdit.insert('/')

    def ps_bt2(self):
        self.lineEdit.insert('*')

    def ps_bt3(self):
        self.lineEdit.insert('+')

    def ps_bt4(self):
        self.lineEdit.insert('-')

    def ps_bt5(self):
        self.lineEdit.insert('=')
        self.calculate()

    def ps_bt6(self):
        self.lineEdit.insert('.')

    def ps_bt7(self):
        self.lineEdit.insert('0')

    def ps_bt8(self):
        self.lineEdit.insert('1')

    def ps_bt9(self):
        self.lineEdit.insert('2')

    def ps_bt10(self):
        self.lineEdit.insert('3')

    def ps_bt11(self):
        self.lineEdit.insert('4')

    def ps_bt12(self):
        self.lineEdit.insert('5')

    def ps_bt13(self):
        self.lineEdit.insert('6')

    def ps_bt14(self):
        self.lineEdit.insert('7')

    def ps_bt15(self):
        self.lineEdit.insert('8')

    def ps_bt16(self):
        self.lineEdit.insert('9')

    def ps_bt17(self):
        self.lineEdit.backspace()

    def ps_bt18(self):
        self.lineEdit.clear()

    def ps_bt19(self):
        self.close()

    def lineEdit_clear(self):
        self.lineEdit.clear()

    def calculate(self):
        # text = self.lineEdit.text()
        # self.lineEdit.setText('%s= %.2f' % (text, eval(text)))
        text = self.lineEdit.text()
        self.textBrowser.append('%s= %.2f' % (text, eval(text)))
        self.lineEdit_clear()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = mwindow()
    w.pushButton.clicked.connect(w.ps_bt)
    w.pushButton_1.clicked.connect(w.ps_bt1)
    w.pushButton_2.clicked.connect(w.ps_bt2)
    w.pushButton_3.clicked.connect(w.ps_bt3)
    w.pushButton_4.clicked.connect(w.ps_bt4)
    w.pushButton_5.clicked.connect(w.calculate)
    w.pushButton_6.clicked.connect(w.ps_bt6)
    w.pushButton_7.clicked.connect(w.ps_bt7)
    w.pushButton_8.clicked.connect(w.ps_bt8)
    w.pushButton_9.clicked.connect(w.ps_bt9)
    w.pushButton_10.clicked.connect(w.ps_bt10)
    w.pushButton_11.clicked.connect(w.ps_bt11)
    w.pushButton_12.clicked.connect(w.ps_bt12)
    w.pushButton_13.clicked.connect(w.ps_bt13)
    w.pushButton_14.clicked.connect(w.ps_bt14)
    w.pushButton_15.clicked.connect(w.ps_bt15)
    w.pushButton_16.clicked.connect(w.ps_bt16)
    w.pushButton_17.clicked.connect(w.ps_bt17)
    w.pushButton_18.clicked.connect(w.ps_bt18)
    w.pushButton_19.clicked.connect(w.ps_bt19)
    w.show()
    sys.exit(app.exec_())

執行Run.py,可在裡面進行數值計算:


我曾經跨過山和大海,也穿過人山人海,我曾經擁有著的一切,轉眼都飄散如煙,我曾經失落失望失掉所有方向,直到看見平凡才是唯一的答案。
——韓寒《平凡之路》