通过三个简单软件程序分析,找到PyQt GUI编程的感觉!
(源自《Rapid GUI Programming with Python and Qt》,本文将示例由Qt4改成Qt5版本)
软件2:计算器
该示例是一个对话框应用程序,即没有菜单栏、工具条、状态栏。 软件功能: 1.用户输入数学表达式,按回车键后,表达式及结果就会显示出来。 2.如果输入的表达式无效,软件会显示错误信息。 软件运行效果图
1 ‘‘‘ 2 一个计算器 3 该示例是一个对话框应用程序,即没有菜单栏、工具条、状态栏。 4 软件功能: 5 1.用户输入数学表达式,按回车键后,表达式及结果就会显示出来。 6 2.如果输入的表达式无效,软件会显示错误信息。 7 ‘‘‘ 8 9 import sys 10 from math import * # 输入的表达式可使用math模块中所有数学函数,如sin、cos 11 from PyQt5.QtWidgets import * # 使用此模块中的QWidget,QTextBrowser、QLineEdit 12 13 # 通过QDialog子类化的方法创建一个顶级窗口 14 # PyQt中的所有控件都是继承自QWidget, 如:QDialog,QLineEdit 15 class Form(QDialog): 16 17 def __init__(self): 18 super().__init__() # 初始化窗口 19 20 # 创建两个窗口控件 21 self.browser = QTextBrowser() 22 self.lineedit = QLineEdit("Type an expression and press Enter") 23 self.lineedit.selectAll() 24 25 # 创建一个垂直布局管理器QVBoxLayout 26 # PyQt提供了三种布局管理器:垂直布局/水平布局/网格布局,它们可以彼此嵌套。 27 # 使用了布局管理器后,各种控件会随着窗口的大小改变自动调整。 28 layout = QVBoxLayout() 29 layout.addWidget(self.browser) 30 layout.addWidget(self.lineedit) 31 self.setLayout(layout) 32 33 self.lineedit.setFocus() 34 35 # 信号(returnPressed)连接到槽(updateUi) 36 # 当用户在lineedit上按下回车键时,retrunPressed信号就会发射出来, 37 # 因有connect , 此时会调用updateUi(). 38 self.lineedit.returnPressed.connect(self.updateUi) 39 40 self.setWindowTitle("Calculate") 41 42 def updateUi(self): 43 try: 44 text = self.lineedit.text() 45 46 # 使用eval函数计算表达式的值 47 self.browser.append("{} = <b>{}</b>".format(text,eval(text))) 48 except: 49 self.browser.append("<font color=red>{} is invalid!</font>".format(text)) 50 51 app = QApplication(sys.argv) 52 form = Form() # 创建Form实例 53 form.show() # 调用了show()后,事件循环开始,显示出窗口 54 app.exec_()
时间: 2024-10-16 22:03:12