菜单栏是在主窗口QMainWindow的标题栏下面的长条,用来显示QMenu类的对象。QMenu类可以向菜单栏加入widgets,也用来创建上下文菜单和弹出菜单。每个QMenu对象可能包含一个或多个QAction或级联QMenu对象。
- menuBar():返回主窗口的QMenubar对象
- addMenu():在菜单栏上添加一个新的QMenu对象
- addAction():对该QMenu对象添加一个新的动作,可包含文字或图标
- setEnabled():设置action的状态为enabled或disabled
- addSeperator():在菜单中添加分割线
- Clear():清楚菜单栏/菜单中的所有内容
- setShortcut():为action添加快捷键
- setText():为action添加文本
- setTitle():设定QMenu的标题
- text():取回与QAction对象相关联的文本
- title():取回与QMenu对象相关联的文本
当任一QAction按钮被点击时,QMenu都会发射triggered()信号。
栗子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| import sys from PyQt4.QtCore import * from PyQt4.QtGui import *
class window(QMainWindow): def __init__(self, parent=None): super(window, self).__init__(parent) self.init()
def init(self): layout = QHBoxLayout() bar = self.menuBar() file = bar.addMenu("File") file.addAction("New")
save = QAction("Save", self) save.setShortcut("Ctrl+S") file.addAction(save)
edit = file.addMenu("Edit") edit.addAction("copy") edit.addAction("paste")
quit = QAction("Quit", self) file.addAction(quit) file.triggered[QAction].connect(self.processtrigger) self.setLayout(layout) self.setWindowTitle("menu demo")
def processtrigger(self, q): print q.text() + " is triggered"
def main(): app = QApplication(sys.argv) ex = window() ex.show() sys.exit(app.exec_())
if __name__ == '__main__': main()
|