博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python Rapid GUI Programming 第二篇。 30行写一个更奇葩的计算器。Python 基础教程
阅读量:5902 次
发布时间:2019-06-19

本文共 2312 字,大约阅读时间需要 7 分钟。

接上一篇GUI编程的日志,现在我们来写一个正常点程序。先让我们看一下程序的样子。

看似正常多了。我们有了一个框框,一个X。而且不需要命令行输入了!

根据上一篇日志所述,我们需要载入模块。

先载入QT4所用的模块以及计算所用的math模块。

from __future__ import division     import sysfrom math import *from PyQt4.QtCore import *from PyQt4.QtGui import *

根据截图,这个应用程序用了两个widgets ,一个是QTextBrowser这是一个只读的文本或者HTML查看器, 另一个是QLineEdit 是一个单行的可写的文本查看器。

根据QT的规则,所有的字符都为Uni编码。

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 coding by Kaysin")

这样就完成了初始画面的定义。

QVBoxLayout()  就是一个可以放置widget的页面。

而下面的addWidget方法,就是将所创建的widget添加进新的页面。

下面有触发信号,按下回车。

载入函数 upadteUi

def updateUi(self):        try:            text = unicode(self.lineedit.text())            self.browser.append("%s = %s" % (text, eval(text)))        except:            self.browser.append(                    "%s is invalid!" % text)

这个很好理解,就是判断输入是否合法,出现异常则输出不合法。

我们看下源程序。

from __future__ import divisionimport sysfrom math import *from PyQt4.QtCore import *from PyQt4.QtGui import *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 coding by Kaysin")    def updateUi(self):        try:            text = unicode(self.lineedit.text())            self.browser.append("%s = %s" % (text, eval(text)))        except:            self.browser.append(                    "%s is invalid!" % text)app = QApplication(sys.argv)form = Form()form.show()app.exec_()

转载于:https://www.cnblogs.com/Kaysin/archive/2013/02/17/2914796.html

你可能感兴趣的文章
AssetBundle进阶内存优化(Unity 4.x)
查看>>
Windows Home Server 简体中文版安装和配置体验 - 海量图鉴
查看>>
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
查看>>
Windows 8部署系列PART3:配置WDS服务器环境
查看>>
Ruby中写一个判断成绩分类的脚本
查看>>
《从零开始学Swift》学习笔记(Day 40)——析构函数
查看>>
Exchange2003-2010迁移系列之十,Exchange证书攻略
查看>>
infortrend ESDS RAID6故障后的数据恢复方案
查看>>
extmail集群的邮件负载均衡方案 [lvs dns postfix]
查看>>
SCCM2012SP1---资产管理和远程管理
查看>>
Android Activity 之 startActivityForResult 的使用
查看>>
org.springframework.util 类 Assert的使用
查看>>
java提供类与cglib包实现动态代理
查看>>
flask上传多个文件,获取input中的数组
查看>>
更改UIView的背景
查看>>
JLNotebookView
查看>>
StackPanel
查看>>
SPUserResizableView
查看>>
UML类图示例
查看>>
sh ./ 执行区别
查看>>