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就可以了. 
 
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的中央部件.中央部件就是说要占据初菜单,工具栏,状态栏之外的所有空间.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值