2012-04-29 82 views
11

如何讓我的qmenu可檢查?如何使qmenu項目checkable pyqt4 python

from PyQt4 import QtGui 

app = QtGui.QApplication([]) 

menu = QtGui.QMenu() 

menu.addAction('50%') 
menu.addAction('100%') 
menu.addAction('200%') 
menu.addAction('400%') 
menu.show() 

app.exec_() 
+0

您想讓'QMenu'可檢查或操作? AFAIK,'QMenu'不能被檢查。 – Avaris 2012-04-29 01:30:04

+0

@Avaris是的,我想要的行動是可檢查的。 – unice 2012-04-29 01:36:57

回答

21

這樣的:

from PyQt4 import QtGui 

app = QtGui.QApplication([]) 

w = QtGui.QMainWindow() 
menu = QtGui.QMenu("menu", w) 

menu.addAction(QtGui.QAction('50%', menu, checkable=True)) 
menu.addAction(QtGui.QAction('100%', menu, checkable=True)) 
menu.addAction(QtGui.QAction('200%', menu, checkable=True)) 
menu.addAction(QtGui.QAction('300%', menu, checkable=True)) 
menu.addAction(QtGui.QAction('400%', menu, checkable=True)) 

w.menuBar().addMenu(menu) 
w.show() 
app.exec_() 

或witht單選按鈕:

from PyQt4 import QtGui 

app = QtGui.QApplication([]) 

w = QtGui.QMainWindow() 
menu = QtGui.QMenu("menu", w) 
ag = QtGui.QActionGroup(w, exclusive=True) 

a = ag.addAction(QtGui.QAction('50%', w, checkable=True)) 
menu.addAction(a) 

a = ag.addAction(QtGui.QAction('100%', w, checkable=True)) 
menu.addAction(a) 

a = ag.addAction(QtGui.QAction('200%', w, checkable=True)) 
menu.addAction(a) 

a = ag.addAction(QtGui.QAction('300%', w, checkable=True)) 
menu.addAction(a) 

a = ag.addAction(QtGui.QAction('400%', w, checkable=True)) 
menu.addAction(a) 

w.menuBar().addMenu(menu) 
w.show() 
app.exec_() 
+0

非常感謝您的所有示例答案。這解決了我的問題。 :) – unice 2012-04-29 03:00:50

+3

我會補充說,你可以使用'myaction = QtGui.QAction('50%',menu,checkable = True)',然後'menu.addAction(myaction)'並最終'myaction.isChecked()'來獲得檢查狀態。 – 2015-03-20 01:22:19

0

我建議增加幾行到緊湊第一溶液,以顯示實際使用的按鈕:

from PyQt4 import QtGui, QtCore 

def isChecked(): 
    """ Prints selected menu labels. """ 
    [print(action.text()) for action in menu.actions() if action.isChecked()] 

app = QtGui.QApplication([]) 
w = QtGui.QMainWindow() 
menu = QtGui.QMenu("menu", w) 

menu.addAction(QtGui.QAction('50%', menu, checkable=True)) 
menu.addAction(QtGui.QAction('100%', menu, checkable=True)) 
menu.addAction(QtGui.QAction('200%', menu, checkable=True)) 
menu.addAction(QtGui.QAction('400%', menu, checkable=True)) 

menu.triggered.connect(isChecked) 

w.menuBar().addMenu(menu) 
w.show() 
app.exec_()