python 菜单栏和工具栏_Python pyQt4/pyQt5 学习笔记2(状态栏、菜单栏和工具栏)

例子:状态栏、菜单栏和工具栏

importsysfrom PyQt4 importQtGuiclassExample(QtGui.QMainWindow):def __init__(self):

super(Example, self).__init__()

self.initUI()definitUI(self):

textEdit=QtGui.QTextEdit()

self.setCentralWidget(textEdit)

exitAction= QtGui.QAction(QtGui.QIcon(), 'Exit', self)

exitAction.setShortcut('Ctrl+Q')

exitAction.setStatusTip('Exit application')

exitAction.triggered.connect(self.close)

bar1=self.statusBar()

bar1.showMessage('Ready')

menubar=self.menuBar()

fileMenu= menubar.addMenu('&File')

fileMenu.addAction(exitAction)

toolbar= self.addToolBar('Exit')

toolbar.addAction(exitAction)

self.setGeometry(300, 300, 350, 250)

self.setWindowTitle('Main window')

self.show()defmain():

app=QtGui.QApplication(sys.argv)

ex=Example()

sys.exit(app.exec_())if __name__ == '__main__':

main()

运行效果如下:

1d5823f21baad4f78c8e3b91b3d8469c.png

下面解释上面的代码:

classExample(QtGui.QMainWindow):def __init__(self):

super(Example, self).__init__()

self.initUI()

注意Example类继承于QtGui.QMainWindow

QtGui.QMainWindow类提供了创建应用主窗口的方法,这使得用状态栏(statusbar)、菜单栏(menubar)、工具栏(toolbar)创建一个传统的应用框架成为可能。

textEdit =QtGui.QTextEdit()

self.setCentralWidget(textEdit)

这里我们创建了一个文本编辑框(text edit)部件。我们把它设置成QtGui.QMainWindow的中央部件,中央部件占据了各种栏之外所有的剩余空间

exitAction = QtGui.QAction(QtGui.QIcon(), 'Exit', self)

exitAction.setShortcut('Ctrl+Q')

exitAction.setStatusTip('Exit application')

exitAction.triggered.connect(self.close)

menubar=self.menuBar()

fileMenu= menubar.addMenu('&File')

fileMenu.addAction(exitAction)

在上面这个示例中,我们创建了只由一个菜单组成的菜单栏。这个菜单也仅仅拥有一个选项【这里原文是action,为了方便理解,我们下面将这个action有时翻译成选项。】:结束应用。而且我们给这个选项添加了一个快捷键:Ctrl+Q。

Qt.Gui.QAction是这个行为的一个抽象。在上面这三行中,我们创建了有着自己图标和名字一个选项,而且,我们给这个行为定义了一个快捷键。第三行创建了一个status tip,它的作用是鼠标放在这个选项上时,可以在状态栏中显示出状态“Exit application”。

当我们选择了这个选项时,一个触发信号(triggered signal)被发出了。这个信号和QtGui.QApplication部件的quit()方法相联系(connect),所以信号发出后,程序终止。

menuBar()方法创建了一个菜单栏。这里我们在菜单栏的基础上创建了一个file菜单,并在里面添加了exit选项

bar1=self.statusBar()

bar1.showMessage('Ready')

为了得到一个状态栏,我们调用了QtGui.QMainWindow类中的statusBar()方法【注意Example是继承QMainWindow的】。函数调用创建了一个状态栏,接下来的showMessage()函数调用返回了一个状态栏对象,showMessage()里面的参数是显示在状态栏中的。

toolbar = self.addToolBar('Exit')

toolbar.addAction(exitAction)

我们创建了一个工具栏并且给里面加入了一个选项, 就是菜单选项exitAction

下面是PyQt5的相同功能的例子(macOS版本)

1 importsys2 from PyQt5.QtWidgets importQApplication, QWidget, QTextEdit, QAction, QMainWindow3 from PyQt5.QtGui importQIcon4

5 classExample(QMainWindow):6

7 def __init__(self):8 super(Example, self).__init__()9 self.initUI()10

11

12 definitUI(self):13 textEdit =QTextEdit()14 self.setCentralWidget(textEdit)15

16 exitAction = QAction(QIcon(), 'Exit', self)17 exitAction.setShortcut('Ctrl+Q')18 exitAction.setStatusTip('Exit application')19 exitAction.triggered.connect(self.close)20

21 bar1=self.statusBar()22 bar1.showMessage('Ready')23

24 menubar =self.menuBar()25 menubar.setNativeMenuBar(False)26

27 fileMenu = menubar.addMenu('&File')28 fileMenu.addAction(exitAction)29

30 toolbar = self.addToolBar('Exit')31 toolbar.addAction(exitAction)32

33 self.setGeometry(300, 300, 350, 250)34 self.setWindowTitle('Main window')35 self.show()36

37

38 defmain():39 app =QApplication(sys.argv)40 ex =Example()41 sys.exit(app.exec_())42

43

44 if __name__ == '__main__':45 main()

Mac OS 对待菜单栏有些不同。为了获得全平台一致的效果,我们可以在代码中加入一行:menubar.setNativeMenuBar(False)

效果:

8253944.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值