那么,要做的第一件事就是选择一个图形界面套件。可以使用原生的TK,也可以用跨平台性能很好的wxPython,或者是整体圆闹或结构很像MFC的PyWin32。至于pyGTK,pyQT,都是可选的,但是相对来说文档比较少,学习不便。
选定图形库之后,就可以看文档范例了。计算器总体是比较简单的。我记得WxPython的demo里直接就有一个简单计算器,您可以直接取来用。
import sysfrom math import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QApplication, QDialog, QLineEdit, QTextBrowser, QVBoxLayout
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.lineedit.returnPressed.connect(self.updateUi)
self.setWindowTitle("Calculate")
def updateUi(self):
try:
text = 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)
self.lineedit.setText('')
if __name__=="__main__":
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
运行这个程序就能得到一个小的计算器,前提你已经安装好了pyqt
python中的GUI可以利用pyqt进行编写
#!/usr/bin/env python#############################################################################
##
## Copyright (C) 2010 Riverbank Computing Limited.
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
## All rights reserved.
##
## This file is part of the examples of PyQt.
##
## $QT_BEGIN_LICENSE:BSD$
## You may use this file under the terms of the BSD license as follows:
##
## "Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are
## met:
## * Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
## * Redistributions in binary form must reproduce the above copyright
## notice, this list of conditions and the following disclaimer in
## the documentation and/or other materials provided with the
## distribution.
## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
## the names of its contributors may be used to endorse or promote
## products derived from this software without specific prior written
## permission.
##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICESLOSS OF USE,
## DATA, OR PROFITSOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
## $QT_END_LICENSE$
##
#############################################################################
from PyQt4 import QtCore, QtGui
from ui_calculatorform import Ui_CalculatorForm
class CalculatorForm(QtGui.QWidget):
def __init__(self, parent=None):
super(CalculatorForm, self).__init__(parent)
self.ui = Ui_CalculatorForm()
self.ui.setupUi(self)
@QtCore.pyqtSlot(int)
def on_inputSpinBox1_valueChanged(self, value):
self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox2.value()))
@QtCore.pyqtSlot(int)
def on_inputSpinBox2_valueChanged(self, value):
self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox1.value()))
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
calculator = CalculatorForm()
calculator.show()
sys.exit(app.exec_())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)