PyQt4 - (3) 菜单和工具栏

来源:互联网 发布:python不用科学计数法 编辑:程序博客网 时间:2024/04/29 19:22
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(250150)
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(250150)
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(250150)
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就可以了. 
 
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(350250)
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)
0 0
原创粉丝点击