zoukankan      html  css  js  c++  java
  • PyQt5学习笔记2-GUI编程基础-2

    通过三个简单软件程序分析,找到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_()
  • 相关阅读:
    随机生成字符串,可用来当id
    自己总结的关于uniapp项目用androidstuido打包成apk
    css3 滑动效果 门
    在数组里面随机获取随机的几个内容
    把一个数组分割成两个(不管奇数还是偶数)
    Mysql常用命令
    怎样才能彻底地删除多余输入法软件
    启动MySQL服务
    linux监控命令全覆盖
    浅谈MVC模式与SSH框架
  • 原文地址:https://www.cnblogs.com/atsats/p/8035351.html
Copyright © 2011-2022 走看看