PYQT学习笔记-30行代码实现表达式计算器
来源:互联网 发布:java修饰符 编辑:程序博客网 时间:2024/06/06 13:59
这个应用完全基于对话框样式,用30行代码实现(不计算空白以及注释)。对话框样式指应用程序没有菜单栏,也不会有工具栏和状态栏,通常只是有一些按钮(我们将在下一节中看到这种风格),没有中央部件(central widget,设置为中央部件的部件在实现时会占据主窗口的中央位置)。相反,使用主窗口样式(main window-style)的应用通常拥有菜单栏、工具栏、状态栏,某些情况下还会出现按钮。主窗口样式的应用设置有中央部件(当让了,某些情况下,中央部件是包含有其它部件的容器)。第六章将讨论主窗口样式的应用程序。
此应用使用了两个部件:
lQTextBrowser-只读的多行文本框,可以显示指定文本或HTML;
lQLineEdit -单行文本框,用于显示纯文本信息。
PyQt部件内的文本都是Unicode编码的,若有需要这些文本也可以转化为其他的编码方式。
这个应用(计算器,如图4.3)可以如同通常的GUI应用程序一样通过点击图标运行(单击或双击运行取决于你所用的操作系统和系统设定)。(当然了,它也可以通过控制台运行)。程序运行后,用户可以简单的在单行文本框内输入数学表达式后按下回车,表达式及其计算结果将加入到QTextBrower部件中。表达式和数学错误将抛出异常信息,这些信息也将添加到QTextBrowser中。
首先,给出全部代码:
# -*- coding: utf-8 -*-from __future__ import divisionfrom PyQt4.QtGui import *from PyQt4.QtCore import *import sysfrom math import *QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) class Form(QDialog): def __init__(self, parent=None): super(Form, self).__init__(parent) self.browser = QTextBrowser() self.lineedit = QLineEdit("Type an expression and press Enter") self.lineedit.selectAll() layout = QVBoxLayout() layout.addWidget(self.browser) layout.addWidget(self.lineedit) self.setLayout(layout) self.lineedit.setFocus() self.connect(self.lineedit, SIGNAL("returnPressed()"),self.updateUi) self.setWindowTitle("Calculate") def updateUi(self): try: text = unicode(self.lineedit.text()) self.browser.append("%s = <b>%s</b>" % (text, eval(text))) except: self.browser.append("<font color=red>%s is invalid!</font>" % text)if __name__ == "__main__": app=QApplication(sys.argv) myqq=Form() myqq.show() app.exec_()
按照惯例,我们一段一段来审视代码。后面所有GUI应用程序将使用与本例相同的模式:窗体通过一个类实现,用户交互行为通过方法处理,程序的main部分则非常的精悍。
from __future__ import division import sys from math import * from PyQt4.QtCore import * from PyQt4.QtGui import *
我们需要的数字运算用不着什么整除之类的,而是浮点运算。通常对于非PyQt组件使用import moduleName的方式导入,然而在本例中我们需要导入所有math组件下的函数和常量。我们通过导入sys来获得sys.argv列表,并导入QtCore和QtGui组件下的所有内容。
转载申明:本站原创,欢迎转载。但转载时请保留原文地址。
原文地址:http://www.2sos.net/post/332.html
- PYQT学习笔记-30行代码实现表达式计算器
- PyQt笔记--代码备份
- PyQt学习笔记一
- pyqt 学习笔记
- PyQt实战之计算器的实现
- PyQt学习笔记(10)--QSetting
- PyQt学习笔记(11)--QTreeWidget
- PyQt学习笔记(12)--QTableWidget
- PyQt学习笔记(13)--QListWidget
- 计算器C++代码实现—— 中缀表达式的计算
- 逆波兰表达式实现计算器(附c++代码)
- Java实现表达式计算器
- 第一个PyQt项目,一个计算器的实现
- 表达式计算器的核心代码
- 三十行代码实现一个简单计算器
- C#实现计算器代码
- 计算器的实现代码
- 计算器的代码实现
- 页面调用Ajax,要记住它的值
- spring mybatis 整合的三种方式
- windows下关于Objective-C开发环境的配置
- LeetCode | 4Sum
- C#实现打印源码(以图形方式输出)
- PYQT学习笔记-30行代码实现表达式计算器
- 数位dp
- SQLITE3数据库操作
- 防火墙开启SQL Server端口
- 拦截器配置
- Linux查看端口占用情况
- 大数据分析的众包平台—Kaggle
- php 正则判断是否是手机号码 最新
- 各种排序算法的比较(转)