PyQt4 - (3) 菜单和工具栏

主窗口
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就可以了.

 

 

PyQt4 - (3) 菜单和工具栏_第1张图片

 

一个完整的程序
最后这个部分,将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的中央部件.中央部件就是说要占据初菜单,工具栏,状态栏之外的所有空间.

你可能感兴趣的:(PyQt4 - (3) 菜单和工具栏)