版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.3项目开发1.功能需求编写一个简易计算器,实现“加、减、乘、除及乘方、开方”运算,界面如图5-18所示。2.系统实现1#1#-*-coding:utf-8-*-2fromPyQt5.QtGuiimport*3fromPyQt5.Qtimport*4fromPyQt5.QtCoreimport*5importsys,math,string6classCalculator(QWidget):7def__init__(self,parent=None):8QWidget.__init__(self,parent=parent)9self.initUI()10self.last=[]11definitUI(self):12list=['%','**','sqrt','C',7,8,9,'+',4,5,6,'-',1,2,3,'*',0,'.','=','/']13length=len(list)14#动态创建按钮15foriinrange(length):16self.button=QPushButton(str(list[i]),self)17#将按钮的clicked信号与onButtonClick函数连接18self.button.clicked.connect(self.onButtonClick)20y=int(i/4)21self.button.move(x*40+10,y*40+100)22self.button.resize(30,30)23#创建文本框24self.lineEdit=QLineEdit('',self)25self.lineEdit.move(10,10)26self.lineEdit.resize(150,70)27self.setGeometry(200,200,170,300)28self.setWindowTitle('计算器')29self.show()3031defonButtonClick(self):32t=self.lineEdit.text()#获取文本框文本33new=self.sender().text()#获取按钮显示文本34self.last.append(new)35print(self.last)36self.lineEdit.setText(t+new)#设置文本框的文本37ifnew=='=':#等号按钮38result=eval(str(t))#计算39self.lineEdit.setText(str(result))#显示计算结果40ifnew=='C':#清空按钮41self.lineEdit.setText('')42ifnew=='sqrt':#开方按钮43self.lineEdit.setText('')44result=math.sqrt(string.atof(t))45self.lineEdit.setText(str(result))46ifnew=='**':#乘方按钮47self.lineEdit.setText('')48result=string.atof(t)**249self.lineEdit.setText(str(result))5051app=QApplication(sys.argv)52w=Calculator()53w.show()54sys.exit(app.exec_())说明:本例的界面也可以使用QTDesigner设计,然后将其转换为.py文件。1.功能需求编写一个简易的文本编辑器实现文件的打开、关闭、保存等操作。界面如图5-19所示。2.系统实现本例的界面使用QTDesigner设计,然后将其转换为.py文件。程序代码如下:1#-*-coding:utf-8-*-2fromPyQt5importQtCore,QtGui,QtWidgets3importsys4fromos.pathimportisfile5classUi_MainWindow(object):6defsetupUi(self,MainWindow):7MainWindow.setObjectName("MainWindow")8MainWindow.resize(596,379)9self.centralwidget=QtWidgets.QWidget(MainWindow)10self.centralwidget.setObjectName("centralwidget")11self.textEdit=QtWidgets.QTextEdit(self.centralwidget)12#略...13#略14self.actionSaveFile.setObjectName("actionSaveFile")15self.menu.addAction(self.actionOpenFile)16self.menu.addSeparator()17self.menu.addAction(self.actionSaveFile)18self.menubar.addAction(self.menu.menuAction())19self.retranslateUi(MainWindow)2021self.actionOpenFile.triggered.connect(self.OpenFile)22self.actionSaveFile.triggered.connect(self.SaveFile)23defretranslateUi(self,MainWindow):24_translate=QtCore.QCoreApplication.translate25MainWindow.setWindowTitle(_translate("MainWindow","文本编辑器"))26self.menu.setTitle(_translate("MainWindow","文件"))2727self.actionOpenFile.setText(_translate("MainWindow","OpenFile"))28self.action.setText(_translate("MainWindow","-"))29self.actionSaveFile.setText(_translate("MainWindow","SaveFile"))30defSaveFile(self):#保存文件31fromos.pathimportisfile32ifisfile(self.filename):33file=open(self.filename,'w')34file.write(self.textEdit.toPlainText())35file.close()36defOpenFile(self):#打开文件操作37fd=QtWidgets.QFileDialog()38self.filename,self.type=fd.getOpenFileName()39#self.filename='g:/n032.txt'40ifisfile(self.filename):41file1=open(self.filename,'r+')42text=file1.read()43self.textEdit.setText(text)44if__name__=="__main__":45app=QtWidgets.QApplication(sys.argv)46win=QtWidgets.QMainWindow()47ui=Ui_MainWindow()48ui.setupUi(win)49win.show()50sys.exit(app.exec_())程序说明:本程序为ui文件转换为.py文件后自动生成的代码(省略了部分内容)。21、22行将对应的菜单触发信号与相应的函数连接,完成菜单的单击动作。1.项目需求变电站设备巡检系统界面包括:(1)系统主界面:包括菜单及功能按钮,如图5-20所示(2)添加设备对话框:对巡检设备进行添加,如图5-21所示。(3)设备列表对话框:实现设备的列表显示,如图5-22所示。(4)设备巡检对话框:实现巡检信息的录入,如图5-23所示。(5)巡检信息查询对话框:可以实现按设备名、设备状态和按日期查询,如图5-24所示。该系统的功能实现见第6章。图5-21添加设备对话框图5-22设备列表2.项目实现(1)主窗口11classMainWindow(QMainWindow):2definit(self):3super().init()4self.setWindowTitle("变电站设备巡检系统")#窗口标题5self.setWindowIcon(QIcon(":/icons/main.png"))#窗口图标66self.setMinimumSize(1000,700)7self.setup_ui()89defsetup_ui(self):10#创建中心部件11central_widget=QWidget()#创建窗体12self.setCentralWidget(central_widget)13#主布局14layout=QVBoxLayout(central_widget)#创建一个垂直布局17title_label=QLabel("变电站设备巡检系统")#创建标签18title_label.setFont(QFont("Arial",20,QFont.Bold))19title_label.setAlignment(Qt.AlignCenter)20layout.addWidget(title_label)#将标签添加到布局中2122#分隔线23layout.addWidget(QLabel())2425#按钮区域26button_layout=QHBoxLayout()2728#设备管理按钮29device_group=QGroupBox("设备管理")30device_layout=QVBoxLayout()3132add_device_button=QPushButton("添加设备")33add_device_button.setIcon(QIcon(":/icons/add_device.png"))34add_device_button.clicked.connect(self.show_add_device_dialog)3536list_device_button=QPushButton("设备列表")37list_device_button.setIcon(QIcon(":/icons/list_device.png"))38list_device_button.clicked.connect(self.show_device_list)3940device_layout.addWidget(add_device_button)41device_layout.addWidget(list_device_button)42device_group.setLayout(device_layout)4344#巡检管理按钮45inspect_group=QGroupBox("巡检管理")46inspect_layout=QVBoxLayout()4748inspect_button=QPushButton("设备巡检")49inspect_button.setIcon(QIcon(":/icons/inspect.png"))50inspect_button.clicked.connect(self.show_inspection_dialog)515152inspect_layout.addWidget(inspect_button)53inspect_group.setLayout(inspect_layout)5455#查询管理按钮56query_group=QGroupBox("记录查询")57query_layout=QVBoxLayout()5859query_button=QPushButton("巡检查询")60query_button.setIcon(QIcon(":/icons/query.png"))61query_button.clicked.connect(self.show_query_dialog)6263query_layout.addWidget(query_button)64query_group.setLayout(query_layout)6566button_layout.addWidget(device_group)67button_layout.addWidget(inspect_group)68button_layout.addWidget(query_group)69layout.addLayout(button_layout)7071#统计信息72stats_group=QGroupBox("系统统计")73stats_layout=QHBoxLayout()7475self.device_count_label=QLabel("设备总数:0")76self.device_count_label.setFont(QFont("Arial",12))7778self.record_count_label=QLabel("巡检记录:0")79self.record_count_label.setFont(QFont("Arial",12))81self.normal_count_label=QLabel("正常记录:0")82self.normal_count_label.setFont(QFont("Arial",12))84self.abnormal_count_label=QLabel("异常记录:0")85self.abnormal_count_label.setFont(QFont("Arial",12))87stats_layout.addWidget(self.device_count_label)88stats_layout.addWidget(self.record_count_label)89stats_layout.addWidget(self.normal_count_label)90stats_layout.addWidget(self.abnormal_count_label)91stats_group.setLayout(stats_layout)9293layout.addWidget(stats_group)9495#初始化菜单9696self.init_menu()9798definit_menu(self):99menubar=self.menuBar()101#文件菜单102file_menu=menubar.addMenu("文件")104exit_action=QAction("退出",self)105exit_action.setShortcut("Ctrl+Q")106exit_action.triggered.connect(self.close)#信号和槽107file_menu.addAction(exit_action)109#设备菜单110device_menu=menubar.addMenu("设备")112add_device_action=QAction("添加设备",self)113add_device_action.triggered.connect(self.show_add_device_dialog)114device_menu.addAction(add_device_action)116list_device_action=QAction("设备列表",self)117list_device_action.triggered.connect(self.show_device_list)118device_menu.addAction(list_device_action)120#巡检菜单121inspect_menu=menubar.addMenu("巡检")123inspect_action=QAction("设备巡检",self)124inspect_action.triggered.connect(self.show_inspection_dialog)125inspect_menu.addAction(inspect_action)127#查询菜单128query_menu=menubar.addMenu("查询")130query_action=QAction("巡检记录",self)131query_action.triggered.connect(self.show_query_dialog)132query_menu.addAction(query_action)134#帮助菜单135help_menu=menubar.addMenu("帮助")137about_action=QAction("关于",self)138about_action.triggered.connect(self.show_about)139help_menu.addAction(about_action)43self.setLayout(layout)(2)添加设备窗口1classAddDeviceDialog(QDialog):2def__init__(self,data_manager,parent=None):3super().init(parent)4self.data_manager=data_manager5self.setWindowTitle("添加设备")6self.setWindowIcon(QIcon(":/icons/device.png"))7self.setFixedSize(400,300)8self.setup_ui()910defsetup_ui(self):11layout=QVBoxLayout()13form_layout=QFormLayout()15_edit=QLineEdit()16self.type_combo=QComboBox()17self.type_combo.addItems(["变压器","断路器","隔离开关","避雷器","电容器","电
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋季开学高中军训微视频展播课件
- 2026年秋季开学初中军训着装与仪容仪表课件
- 2026年秋季开学大学擒敌拳训练课件
- 柔性物流网络构建中的协同优化机制研究
- 长期资本在创新企业成长中的耐心投资逻辑分析
- 数字经济背景下金融科技创新的深层驱动因素与系统性影响研究
- 数据资产价值评估与资源化利用的实践研究
- 家族财富管理中长期资本配置的传承机制研究
- 2026年景区专线网约车运营模式
- 2026 年手术患者皮肤保护护理质控专题研讨
- 2026年数字安徽有限责任公司所属企业安徽数安系统集成有限公司第1批次社会招聘18人考试备考试题及答案详解
- 2026年秋季电气工程专业开学第一课 专业认知与学业规划
- 2026 年秋季开学:教师课程标准深度解读培训
- 2026年甘肃省广播电视总台招聘事业编制工作人员20人考试参考题库及答案详解
- 《高一数学竞赛暑假系统复习课件》
- 硫酸安全技术说明书培训
- 雨课堂学堂在线学堂云《自然辩证法概论(北京航空航天)》单元测试考核答案
- 2026年互联网营销师(五级)考试题库(含答案)
- 2026年注册核安全工程师《案例分析(核技术方向)》真题及答案解析
- 双胞胎摇号申请书
- METS(医药类)第三级考试词汇表
评论
0/150
提交评论