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

          導航

          留言簿(2)

          隨筆分類

          隨筆檔案

          Python

          搜索

          •  

          積分與排名

          • 積分 - 25732
          • 排名 - 1515

          最新評論

          閱讀排行榜

           
          主窗口
          QMainWindow類給我們提供了一個程序主窗口,使得我們能夠創(chuàng)建一個標準的程序框架,包括了狀態(tài)欄,工具欄和菜單欄。

          狀態(tài)欄(Statusbar)
          狀態(tài)欄就是一種用來顯示狀態(tài)信息的小部件.
          ?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 ' )
          這里需要注意的就是這一句,通過調(diào)用QMainWindow類的statusBar()方法,得到statusbar的句柄,然后調(diào)用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)
          首先調(diào)用self.menuBar()創(chuàng)建菜單欄,接著調(diào)用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程序是通過命令來控制的, 而這些命令可以由菜單,上下文菜單,工具欄或者快捷鍵來發(fā)出.? PyQt將命令抽象為actions. 一個action對象可以有text, 圖標, 快捷鍵, 狀態(tài)欄描述, "What's This?"描述和tooltip. 上面的例子,就定義了icon, tooltip和shortcut.
          self.connect(self.exit,?QtCore.SIGNAL( ' triggered() ' ),?QtCore.SLOT( ' close() ' ))
          這一句,將action的triggered()信號和預先定義的close()槽結(jié)合到一起.
          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)
          這里創(chuàng)建了一個edit部件,并將其設置為QMainWindow的中央部件.中央部件就是說要占據(jù)初菜單,工具欄,狀態(tài)欄之外的所有空間.




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

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

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

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

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

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

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

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

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

           
          Copyright © glorywine Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 大田县| 皋兰县| 通辽市| 宜兴市| 葫芦岛市| 沁阳市| 屏山县| 依安县| 偃师市| 类乌齐县| 彰化县| 颍上县| 沂源县| 日照市| 申扎县| 佛教| 津南区| 宿迁市| 晋州市| 秦安县| 公安县| 万荣县| 如东县| 张掖市| 金华市| 朝阳区| 神农架林区| 仪陇县| 全南县| 盈江县| 余江县| 绵竹市| 延川县| 沽源县| 富锦市| 镇江市| 鹤壁市| 息烽县| 米脂县| 习水县| 海口市|