雜家雜談 |
|
|||
日歷
統計
導航留言簿(2)隨筆分類隨筆檔案Python搜索積分與排名
最新評論
閱讀排行榜 |
主窗口
QMainWindow類給我們提供了一個程序主窗口,使得我們能夠創建一個標準的程序框架,包括了狀態欄,工具欄和菜單欄。 狀態欄(Statusbar) 狀態欄就是一種用來顯示狀態信息的小部件.
?1?#!/usr/bin/python
?2? ?3?#?statusbar.py ?4? ?5?import?sys ?6?from?PyQt4?import?QtGui ?7? ?8?class?MainWindow(QtGui.QMainWindow): ?9?????def?__init__(self): 10?????????QtGui.QMainWindow.__init__(self) 11? 12?????????self.resize(250,?150) 13?????????self.setWindowTitle('statusbar') 14????????? 15?????????self.statusBar().showMessage('Ready') 16? 17?app?=?QtGui.QApplication(sys.argv) 18?main?=?MainWindow() 19?main.show() 20?sys.exit(app.exec_()) 21?
self.statusBar().showMessage(
'
Ready
'
)
這里需要注意的就是這一句,通過調用QMainWindow類的statusBar()方法,得到statusbar的句柄,然后調用showMessage()顯示信息在statusbar上.非常容易吧!
菜單欄(Menubar) 菜單是應用程序中最常見的一種組件.通常每個菜單都是完成不同的任務.
?1?#!/usr/bin/python
?2? ?3?#?menubar.py ?4? ?5?import?sys ?6?from?PyQt4?import?QtGui,?QtCore ?7? ?8?class?MainWindow(QtGui.QMainWindow): ?9?????def?__init__(self): 10?????????QtGui.QMainWindow.__init__(self) 11????????? 12?????????self.resize(250,?150) 13?????????self.setWindowTitle('menubar') 14????????? 15?????????exit?=?QtGui.QAction(QtGui.QIcon('icons/web.png'),?'Exit',?self) 16?????????exit.setShortcut('Ctrl+Q') 17?????????exit.setStatusTip('Exit?application') 18?????????self.connect(exit,?QtCore.SIGNAL('triggered()'),?QtCore.SLOT('close()')) 19????????? 20?????????self.statusBar() 21? 22?????????menubar?=?self.menuBar() 23?????????file?=?menubar.addMenu('&File') 24?????????file.addAction(exit) 25? 26?app?=?QtGui.QApplication(sys.argv) 27?main?=?MainWindow() 28?main.show() 29?sys.exit(app.exec_()) 30?
menubar?
=
?self.menuBar()
首先調用self.menuBar()創建菜單欄,接著調用addMenu()添加一個菜單,最后給菜單添加一個動作,就是這里的exit.
file? = ?menubar.addMenu( ' &File ' ) file.addAction(exit) 工具欄(Toolbar) 菜單可以將不同的命令按組分類,然而,有些常用的命令就可以通過工具欄來放置,這樣更便于使用.
?1?#!/usr/bin/python
?2? ?3?#?toolbar.py ?4? ?5?import?sys ?6?from?PyQt4?import?QtGui,?QtCore ?7? ?8?class?MainWindow(QtGui.QMainWindow): ?9?????def?__init__(self): 10?????????QtGui.QMainWindow.__init__(self) 11????????? 12?????????self.resize(250,?150) 13?????????self.setWindowTitle('toolbar') 14????????? 15?????????self.exit?=?QtGui.QAction(QtGui.QIcon('icons/web.png'),?'Exit',?self) 16?????????self.exit.setShortcut('Ctrl+Q') 17?????????self.connect(self.exit,?QtCore.SIGNAL('triggered()'),?QtCore.SLOT('close()')) 18? 19?????????self.toolbar?=?self.addToolBar('Exit') 20?????????self.toolbar.addAction(self.exit) 21? 22?app?=?QtGui.QApplication(sys.argv) 23?main?=?MainWindow() 24?main.show() 25?sys.exit(app.exec_())
self.exit?
=
?QtGui.QAction(QtGui.QIcon(
'
icons/web.png
'
),?
'
Exit
'
,?self)
GUI程序是通過命令來控制的, 而這些命令可以由菜單,上下文菜單,工具欄或者快捷鍵來發出.? PyQt將命令抽象為actions. 一個action對象可以有text, 圖標, 快捷鍵, 狀態欄描述, "What's This?"描述和tooltip. 上面的例子,就定義了icon, tooltip和shortcut.
self.exit.setShortcut( ' Ctrl+Q ' )
self.connect(self.exit,?QtCore.SIGNAL(
'
triggered()
'
),?QtCore.SLOT(
'
close()
'
))
這一句,將action的triggered()信號和預先定義的close()槽結合到一起.
self.toolbar?
=
?self.addToolBar(
'
Exit
'
)
然后就將定義好的action放入toolbar就可以了.
self.toolbar.addAction(self.exit) ![]() Figure: toolbar 一個完整的程序 最后這個部分,將menubar, toolbar和statusbar放在一起.
?1?#!/usr/bin/python
?2? ?3?#?mainwindow.py ?4? ?5?import?sys ?6?from?PyQt4?import?QtGui,?QtCore ?7? ?8?class?MainWindow(QtGui.QMainWindow): ?9?????def?__init__(self): 10?????????QtGui.QMainWindow.__init__(self) 11? 12?????????self.resize(350,?250) 13?????????self.setWindowTitle('mainwindow') 14????????? 15?????????textEdit?=?QtGui.QTextEdit() 16?????????self.setCentralWidget(textEdit) 17? 18?????????exit?=?QtGui.QAction(QtGui.QIcon('icons/web.png'),?'Exit',?self) 19?????????exit.setShortcut('Ctrl+Q') 20?????????exit.setStatusTip('Exit?application') 21???????? self.connect(exit,?QtCore.SIGNAL('triggered()'),?QtCore.SLOT('close()')) 22????????? 23?????????self.statusBar() 24????????? 25?????????menubar?=?self.menuBar() 26?????????file?=?menubar.addMenu('&File') 27?????????file.addAction(exit) 28????????? 29?????????toolbar?=?self.addToolBar('Exit') 30?????????toolbar.addAction(exit) 31? 32?app?=?QtGui.QApplication(sys.argv) 33?main?=?MainWindow() 34?main.show() 35?sys.exit(app.exec_()) 36?
textEdit?
=
?QtGui.QTextEdit()
這里創建了一個edit部件,并將其設置為QMainWindow的中央部件.中央部件就是說要占據初菜單,工具欄,狀態欄之外的所有空間.
self.setCentralWidget(textEdit)
評論:
|
![]() |
|
Copyright © glorywine | Powered by: 博客園 模板提供:滬江博客 |