您的位置:首页 > 汽车 > 新车 > 官方网站下载免费软件_飞机订票系统网页设计总结_国内免费建站平台_谷歌paypal官网

官方网站下载免费软件_飞机订票系统网页设计总结_国内免费建站平台_谷歌paypal官网

2025/2/8 13:28:46 来源:https://blog.csdn.net/weixin_59422604/article/details/145431239  浏览:    关键词:官方网站下载免费软件_飞机订票系统网页设计总结_国内免费建站平台_谷歌paypal官网
官方网站下载免费软件_飞机订票系统网页设计总结_国内免费建站平台_谷歌paypal官网

计算器

1.QT Designer设计外观

  • 1.pushButton
  • 2.textEdit
  • 3.groupBox
  • 4.布局设计
    在这里插入图片描述

2.加载ui文件

导入模块:
  • sys:用于处理命令行参数。

  • QApplication:PyQt5 应用程序类。

  • QWidget:窗口基类。

  • uic:用于加载 .ui 文件。

  • QIcon:用于设置窗口图标。

MyWindow 类:
  • 继承自 QWidget,用于创建主窗口。

  • init 方法中调用 self.init_ui() 初始化界面。

  • init_ui 方法中加载 .ui 文件并设置窗口图标和标题。

加载 .ui 文件:
  • 使用 uic.loadUi(“./计算器.ui”) 加载 .ui 文件,并将其赋值给 self.ui。

  • self.ui 是一个包含 .ui 文件中所有控件的对象。

设置窗口图标和标题:
  • 使用 setWindowIcon 设置窗口图标。

  • 使用 setWindowTitle 设置窗口标题。

显示窗口:
  • 在 if name == “main”: 中创建 QApplication 和 MyWindow 实例,并调用 w.ui.show() 显示窗口。
import sysfrom PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import uicclass MyWindow(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.ui = uic.loadUi("./计算器.ui")print(self.ui.__dict__)  # 查看ui文件中有哪些控件self.ui.setWindowIcon(QIcon('img.png'))self.ui.setWindowTitle("傻瓜计算器")  # 修改标题的名称
if __name__=="__main__":app = QApplication(sys.argv)w = MyWindow()# 展示窗口w.ui.show()app.exec()

代码解释

超级呆瓜的初始化,刚开始学习QT有点呆,欢迎大家讨论,共同进步

    def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.ui = uic.loadUi("./计算器.ui",self)# print(self.ui.__dict__)  # 查看ui文件中有哪些控件self.ui.setWindowIcon(QIcon('img.png'))self.ui.setWindowTitle("计算器")  # 修改标题的名称self.x = ""# 初始化控件self.textEdit = self.ui.textEdit # 计算过程框self.textEdit_2 = self.ui.textEdit_2 # 计算结果框self.pushButton_1=self.ui.pushButton_1 # C :清零self.pushButton_2 = self.ui.pushButton_2 # X:后退一格self.pushButton_3 = self.ui.pushButton_3 # %:百分号self.pushButton_4 = self.ui.pushButton_4 # /:除号self.pushButton_5 = self.ui.pushButton_5 # 7self.pushButton_6 = self.ui.pushButton_6 # 8self.pushButton_7 = self.ui.pushButton_7 # 9self.pushButton_8 = self.ui.pushButton_8 # *:乘号self.pushButton_9 = self.ui.pushButton_9 # 4self.pushButton_10 = self.ui.pushButton_10 # 5self.pushButton_11 = self.ui.pushButton_11 # 6self.pushButton_12 = self.ui.pushButton_12 # -:减法self.pushButton_13 = self.ui.pushButton_13 # 1self.pushButton_14 = self.ui.pushButton_14 # 2self.pushButton_15 = self.ui.pushButton_15 # 3self.pushButton_16 = self.ui.pushButton_16 # +:加法self.pushButton_17 = self.ui.pushButton_17 # eself.pushButton_18 = self.ui.pushButton_18 # 0self.pushButton_19 = self.ui.pushButton_19 # .self.pushButton_20 = self.ui.pushButton_20 # =:等号# 设置框的样式self.textEdit.setText("0")self.textEdit.setAlignment(Qt.AlignRight)  # # 设置文本右对齐self.textEdit.setReadOnly(True)  # 只能进行读取self.textEdit.setStyleSheet("font-size: 24px; height: 60px;")  # 设置字体样式self.textEdit_2.setText("result")self.textEdit_2.setAlignment(Qt.AlignRight)  # # 设置文本右对齐self.textEdit_2.setReadOnly(True)  # 只能进行读取self.textEdit_2.setStyleSheet("font-size: 24px; height: 60px;")  # 设置字体样式# 设置按钮格式for i in range(20):x = f"pushButton_{i+1}"self.pushButton_name = getattr(self, x)  # 动态访问按钮对象self.pushButton_name.setStyleSheet("font-size: 18px; padding: 10px;")self.text = self.pushButton_name.text()self.pushButton_name.clicked.connect(lambda _, t=self.text: self.on_button_click(t))

简单的计算功能

  • 清零
  • 计算结果
  • 显示文本
    def on_button_click(self, text):# 可以获取所有符号print(text)if text == 'C':self.reset_calculator()elif text == '=':self.calculate_result()else:self.text_shaw(text)

清零

    def reset_calculator(self):self.textEdit.clear()self.textEdit.setText("0")self.textEdit.setAlignment(Qt.AlignRight)  # 设置文本右对齐self.textEdit.setReadOnly(True)  # 只能进行读取self.textEdit_2.setText("....")self.textEdit_2.setAlignment(Qt.AlignRight)  # 设置文本右对齐self.textEdit_2.setReadOnly(True)  # 只能进行读取self.x = ""

计算结果

    def calculate_result(self):all_text =  self.textEdit.toPlainText()print(all_text)print(type(all_text))try:result = sp.sympify(all_text)print(f"表达式 '{all_text}' 的计算结果是: {result}")self.textEdit_2.setText(f"{result}")self.textEdit_2.setAlignment(Qt.AlignRight)except sp.SympifyError as e:print(f"无法解析表达式: {e}")

显示文本

    def text_shaw(self,text):self.x += f"{text}"self.textEdit.setText(self.x)self.textEdit.setAlignment(Qt.AlignRight)

键盘输出

    def keyPressEvent(self, event):key = event.text()print(key)if key in '0123456789.+-*/':self.on_button_click(key)print(key)elif event.key() in (Qt.Key_Enter, Qt.Key_Return):self.on_button_click('=')elif event.key() == Qt.Key_Escape:self.reset_calculator()

整体代码

import sys
import re
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit
from PyQt5 import uic
import sympy as sp #计算的库,可以实现四则运算class MyWindow(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.ui = uic.loadUi("./计算器.ui",self)# print(self.ui.__dict__)  # 查看ui文件中有哪些控件self.ui.setWindowIcon(QIcon('img.png'))self.ui.setWindowTitle("计算器")  # 修改标题的名称self.x = ""# 初始化控件self.textEdit = self.ui.textEdit # 计算过程框self.textEdit_2 = self.ui.textEdit_2 # 计算结果框self.pushButton_1=self.ui.pushButton_1 # C :清零self.pushButton_2 = self.ui.pushButton_2 # X:后退一格self.pushButton_3 = self.ui.pushButton_3 # %:百分号self.pushButton_4 = self.ui.pushButton_4 # /:除号self.pushButton_5 = self.ui.pushButton_5 # 7self.pushButton_6 = self.ui.pushButton_6 # 8self.pushButton_7 = self.ui.pushButton_7 # 9self.pushButton_8 = self.ui.pushButton_8 # *:乘号self.pushButton_9 = self.ui.pushButton_9 # 4self.pushButton_10 = self.ui.pushButton_10 # 5self.pushButton_11 = self.ui.pushButton_11 # 6self.pushButton_12 = self.ui.pushButton_12 # -:减法self.pushButton_13 = self.ui.pushButton_13 # 1self.pushButton_14 = self.ui.pushButton_14 # 2self.pushButton_15 = self.ui.pushButton_15 # 3self.pushButton_16 = self.ui.pushButton_16 # +:加法self.pushButton_17 = self.ui.pushButton_17 # eself.pushButton_18 = self.ui.pushButton_18 # 0self.pushButton_19 = self.ui.pushButton_19 # .self.pushButton_20 = self.ui.pushButton_20 # =:等号# 设置框的样式self.textEdit.setText("0")self.textEdit.setAlignment(Qt.AlignRight)  # # 设置文本右对齐self.textEdit.setReadOnly(True)  # 只能进行读取self.textEdit.setStyleSheet("font-size: 24px; height: 60px;")  # 设置字体样式self.textEdit_2.setText("result")self.textEdit_2.setAlignment(Qt.AlignRight)  # # 设置文本右对齐self.textEdit_2.setReadOnly(True)  # 只能进行读取self.textEdit_2.setStyleSheet("font-size: 24px; height: 60px;")  # 设置字体样式# 设置按钮格式for i in range(20):x = f"pushButton_{i+1}"self.pushButton_name = getattr(self, x)  # 动态访问按钮对象self.pushButton_name.setStyleSheet("font-size: 18px; padding: 10px;")self.text = self.pushButton_name.text()self.pushButton_name.clicked.connect(lambda _, t=self.text: self.on_button_click(t))# 实现了按键显示def on_button_click(self, text):# 可以获取所有符号print(text)if text == 'C':self.reset_calculator()elif text == '=':self.calculate_result()else:self.text_shaw(text)def reset_calculator(self):self.textEdit.clear()self.textEdit.setText("0")self.textEdit.setAlignment(Qt.AlignRight)  # 设置文本右对齐self.textEdit.setReadOnly(True)  # 只能进行读取self.textEdit_2.setText("....")self.textEdit_2.setAlignment(Qt.AlignRight)  # 设置文本右对齐self.textEdit_2.setReadOnly(True)  # 只能进行读取self.x = ""def calculate_result(self):all_text =  self.textEdit.toPlainText()print(all_text)print(type(all_text))try:result = sp.sympify(all_text)print(f"表达式 '{all_text}' 的计算结果是: {result}")self.textEdit_2.setText(f"{result}")self.textEdit_2.setAlignment(Qt.AlignRight)except sp.SympifyError as e:print(f"无法解析表达式: {e}")result = re.split(r"([+*/-])", all_text) # 保留分隔符print(result)def text_shaw(self,text):self.x += f"{text}"self.textEdit.setText(self.x)self.textEdit.setAlignment(Qt.AlignRight)def keyPressEvent(self, event):key = event.text()print(key)if key in '0123456789.+-*/':self.on_button_click(key)print(key)elif event.key() in (Qt.Key_Enter, Qt.Key_Return):self.on_button_click('=')elif event.key() == Qt.Key_Escape:self.reset_calculator()if __name__=="__main__":app = QApplication(sys.argv)w = MyWindow()w.ui.show()app.exec()

界面展示
在这里插入图片描述
有任何问题可以联系我,欢迎大家来讨论,共同进步。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com