您的位置:首页 > 编程语言 > Python开发

Python Qt GUI快速编程-第四章的计算器python3+pytq5+Qt Designer实现

2016-12-30 10:27 851 查看
本代码为本人通过python3+pytq5+Qt Designer实现Python Qt GUI快速编程-第四章的计算器功能,还在原有例子上增加了两个按钮,请大家参考。

#Ui_Calc.py

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

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(425, 344)
Dialog.setSizeGripEnabled(True)
self.verticalLayoutWidget = QtWidgets.QWidget(Dialog)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 421, 330))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(5, 5, 5, 5)
self.verticalLayout.setObjectName("verticalLayout")
self.browser = QtWidgets.QTextBrowser(self.verticalLayoutWidget)
self.browser.setObjectName("browser")
self.verticalLayout.addWidget(self.browser)
self.lineedit = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.lineedit.setObjectName("lineedit")
self.verticalLayout.addWidget(self.lineedit)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.OkButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.OkButton.setObjectName("OkButton")
self.horizontalLayout.addWidget(self.OkButton)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
self.CancelButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.CancelButton.setObjectName("CancelButton")
self.horizontalLayout.addWidget(self.CancelButton)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem2)
self.verticalLayout.addLayout(self.horizontalLayout)

self.retranslateUi(Dialog)
self.CancelButton.clicked.connect(Dialog.close)
QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Calculate"))
self.lineedit.setText(_translate("Dialog", "\"Type an expression and press Enter\""))
self.OkButton.setText(_translate("Dialog", "Ok"))
self.CancelButton.setText(_translate("Dialog", "Cancel"))

if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())


#Calc.py

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

"""
Module implementing Calc.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog, QApplication
import sys
from Ui_Calc import Ui_Dialog
from math import *

class Calc(QDialog, Ui_Dialog):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
"""
Constructor

@param parent reference to the parent widget
@type QWidget
"""
super(Calc, self).__init__(parent)
self.setupUi(self)
self.lineedit.selectAll()
self.lineedit.setFocus()
#self.lineedit.returnPressed.connect(self.updatebrower)
self.OkButton.clicked.connect(self.updatebrower)

@pyqtSlot()
def updatebrower(self):
"""
Slot documentation goes here.
"""
# TODO: not implemented yet
#self.lineedit.setFocus()
try:
text = self.lineedit.text()
self.browser.append("{0} =<b>{1}</b>".format(text,
eval(text)))
except:
self.browser.append("<font color=red>{0} is invalid!</font>"
.format(text))

@pyqtSlot()
def on_CancelButton_clicked(self):
"""
Slot documentation goes here.
"""
# TODO: not implemented yet
pass

if __name__ == "__main__":
app = QApplication(sys.argv)
dlg = Calc()
dlg.show()
sys.exit(app.exec_())


运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python qt gui