2012-04-29 17 views
11

¿Cómo puedo hacer mi qmenu chequeable?cómo hacer qmenu item 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

¿Desea hacer que el 'QMenu' sea seleccionable o que se realicen acciones? AFAIK, 'QMenu' no se puede verificar. – Avaris

+0

@Avaris sí, quiero que las acciones sean comprobables. – unice

Respuesta

21

así:

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_() 

o comunicaba con botones de radio:

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

muchas gracias por todas las respuestas de muestra. Eso resuelve mi problema. :) – unice

+3

Yo agregaría que podría usar 'myaction = QtGui.QAction ('50% ', menu, checkable = True)', luego 'menu.addAction (myaction)' y eventualmente 'myaction.isChecked()' para obtener el estado del cheque –

0

sugiero añadiendo unas líneas a la primera solución compacta para mostrar el uso real de los botones:

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_()