2012-04-29 20 views
11

Làm cách nào để tôi có thể kiểm tra qmenu của mình?cách làm cho mục qmenu có thể kiểm tra 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

Bạn muốn thực hiện tác vụ hoặc kiểm tra 'QMenu'? Không thể kiểm tra AFAIK, 'QMenu'. – Avaris

+0

@Avaris yes Tôi muốn các hành động có thể kiểm tra được. – unice

Trả lời

21

như thế này:

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

hoặc witht nút 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

cảm ơn bạn rất nhiều vì tất cả các câu trả lời mẫu. Điều đó giải quyết vấn đề của tôi. :) – unice

+3

Tôi sẽ thêm rằng bạn có thể sử dụng 'myaction = QtGui.QAction ('50% ', menu, checkable = True)', sau đó 'menu.addAction (myaction)' và cuối cùng 'myaction.isChecked()' để có được trạng thái kiểm tra. –

0

Tôi đề nghị bổ sung thêm một vài dòng để các giải pháp đầu tiên nhỏ gọn để hiển thị việc sử dụng thực tế của các nút:

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