4.3 GUI
Python界有很多GUI包(绘图、Web框架,Python界好像喜欢如此),多数是某些原生或C++库的封装。著名者如Qt、wxWidgets、Tkinter、GTK等。本节仅举Qt的HelloWorld例子。
4.3.1 配置IPython
与绘图功能一样,在IPython控制台也可以无阻塞地访问GUI窗口。%gui方法激活消息循环集成系统,该方法可接受的选项是wx、qt、gtk和tk。这里我们使用%gui qt
或ipython --gui qt
。
本节的例子需要安装PyQt4或PySide,两者的API几乎是一致的。
4.3.2 PyQt的Hello World程序
from PyQt4 import QtGui
class HelloWorld(QtGui.QWidget):
"""docstring for HelloWorld"""
def __init__(self):
super(HelloWorld, self).__init__()
# create the button
self.button = QtGui.QPushButton('Click me...', self)
self.button.clicked.connect(self.clicked)
# create the layout
vbox = QtGui.QVBoxLayout()
vbox.addWidget(self.button)
self.setLayout(vbox)
# show the win
self.show()
def clicked(self):
msg = QtGui.QMessageBox(self)
msg.setText('Hello World!')
msg.show()
通过集成QWidget可创建一个窗口类,QWidget是所有窗口和控件的基类。
现在在IPython命令行中输入:
window = HelloWorld()
即可显示一个新的窗口,然后可直接在代码中触发click操作:
window.clicked()
如此容易的交互方式,对于调试复杂窗口会很有帮助。