雜家雜談  
          日歷
          統計
          • 隨筆 - 7
          • 文章 - 1
          • 評論 - 15
          • 引用 - 0

          導航

          留言簿(2)

          隨筆分類

          隨筆檔案

          Python

          搜索

          •  

          積分與排名

          • 積分 - 25728
          • 排名 - 1515

          最新評論

          閱讀排行榜

           
          主窗口
          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()
          file?
          = ?menubar.addMenu( ' &File ' )
          file.addAction(exit)
          首先調用self.menuBar()創建菜單欄,接著調用addMenu()添加一個菜單,最后給菜單添加一個動作,就是這里的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)
          self.exit.setShortcut(
          ' Ctrl+Q ' )
          GUI程序是通過命令來控制的, 而這些命令可以由菜單,上下文菜單,工具欄或者快捷鍵來發出.? PyQt將命令抽象為actions. 一個action對象可以有text, 圖標, 快捷鍵, 狀態欄描述, "What's This?"描述和tooltip. 上面的例子,就定義了icon, tooltip和shortcut.
          self.connect(self.exit,?QtCore.SIGNAL( ' triggered() ' ),?QtCore.SLOT( ' close() ' ))
          這一句,將action的triggered()信號和預先定義的close()槽結合到一起.
          self.toolbar? = ?self.addToolBar( ' Exit ' )
          self.toolbar.addAction(self.exit)
          然后就將定義好的action放入toolbar就可以了.
          toolbar.png
          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()
          self.setCentralWidget(textEdit)
          這里創建了一個edit部件,并將其設置為QMainWindow的中央部件.中央部件就是說要占據初菜單,工具欄,狀態欄之外的所有空間.




          posted on 2008-07-26 12:08 glorywine 閱讀(3862) 評論(5)  編輯  收藏 所屬分類: Python
          評論:
          • # re: PyQt4 - (3) 菜單和工具欄  隔葉黃鶯 Posted @ 2008-07-28 10:43
            用 QT 還不如用 SWT,在 Unix/Linux 下一般都有 JVM,SWT的jar(含 dll)文件都不大。

            在 Unix/Linux 也有 Python,但是 QT 的安裝在 Windows 下稍麻煩,動態庫也大,QT 在 GNOME 下又沒有。  回復  更多評論   

          • # re: PyQt4 - (3) 菜單和工具欄  glorywine Posted @ 2008-07-28 16:58
            @隔葉黃鶯
            我曾經也非常熱衷于SWT,后來感覺java的開發效率實在是不敢恭維,代碼量太大了。
            喜歡python就是因為他的簡潔。
            當然這個是仁者見仁了。
            Qt在windows下已經有基于gpl的二進制包了,安裝起來非常方便。  回復  更多評論   

          • # re: PyQt4 - (3) 菜單和工具欄  隔葉黃鶯 Posted @ 2008-07-29 00:18
            Qt 的動態庫還是很大的

            我一直用的都是類 C/C++ 代碼風格的語言,像 python/ruby/groove 這種風格的不習慣。

            所以我也曾經在 vxWidgets、Qt、SWT 這三個跨平臺組件中選來選去,還是喜歡上了 SWT。雖然說 Qt和vxWidgets可以用C++編程,是所謂的本地代碼,執行效率會高一些,但是他們的動態庫比SWT的class+dll還要大。Qt 對于某些系統沒有的對等控件也是像 SWT 一樣自己來描繪的。

            其他跨平臺的如 GTK/GTK++, 和 TCL 配對的 TK 就只是作了解的。  回復  更多評論   

          • # re: PyQt4 - (3) 菜單和工具欄  隔葉黃鶯 Posted @ 2008-07-31 14:10
            @glorywine
            Qt在windows下已經有基于gpl的二進制包了,哪有這個下載?  回復  更多評論   

          • # re: PyQt4 - (3) 菜單和工具欄[未登錄]  glorywine Posted @ 2008-07-31 19:20
            你可以在這里下載,這個是官網上的.
            http://www.riverbankcomputing.co.uk/software/pyqt/download  回復  更多評論   

           
          Copyright © glorywine Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 屏山县| 昆山市| 彩票| 桐柏县| 宜阳县| 永新县| 卓尼县| 海口市| 台山市| 台北县| 进贤县| 新建县| 安阳市| 镇平县| 德化县| 衡阳市| 集安市| 湖南省| 灵台县| 花垣县| 吉水县| 闵行区| 循化| 浦东新区| 杭州市| 甘肃省| 宝兴县| 苏尼特左旗| 墨竹工卡县| 于田县| 兴国县| 长宁区| 若尔盖县| 阜南县| 榆林市| 综艺| 开原市| 汉川市| 托克逊县| 成武县| 黄龙县|