Найти - Пользователи
Полная версия: PyQt4: как перечислить все пункты меню у QMainWindow?
Начало » GUI » PyQt4: как перечислить все пункты меню у QMainWindow?
1
The gray Cardinal
Есть главное окно, у которого есть меню в несколько колонок, созданное с помощью QMainWindow.menuBar().
Как перебрать в цикле все пункты меню всех колонок, чтобы получить ранее сопоставленные им объекты QAction?
Посмотрев описания классов QAction, QMenu, QMenuBar я не нашёл подходящих методов :(.
self.menuBar().children() возвращает странное: список из трёх QMenu и одного QToolButton (четыре элемента). При этом колонок меню у меня реально две :/.
The gray Cardinal
Вопрос всё ещё актуален. Неужели придётся делать список из этих QAction членом класса только для целей последующего перебора? Некрасиво, вроде…

И попутный вопрос. В документации увидел вот такую картину (это меню):

Не понял, как добиться, чтобы пункты меню работали как radio-button? Тоже не вижу методов :/.
poltergeist
1) QMainWindow.menuBar().actions()
2) QActionGroup
The gray Cardinal
Спасибо, помогло!
gmorgunov
The gray Cardinal
Привет. Не знаю актуален ли еще вопрос про меню( c RadioButton)?
Его можно сделать так:
#!/usr/bin/python
# coding: utf-8
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.resize(200,200)
self.createActions()
self.createMenus()
def item1(self):
print "Minimize"
def item2(self):
print "Bring All to Front"
def item3(self):
print "Form-untitled"
def createActions(self):
self.item1Act = QAction(self.tr("Minimize" ), self)
self.item1Act.setShortcut(self.tr("Ctrl+M"))
self.item1Act.setCheckable(True)
self.item1Act.setChecked(True)
self.connect(self.item1Act,SIGNAL("triggered()"), self.item1)

self.item2Act = QAction(self.tr("Bring All to Front"), self)

self.item3Act = QAction(self.tr("Form-untitled"), self)
self.item3Act.setCheckable(True)
self.connect(self.item2Act, SIGNAL("triggered()"), self.item2)

####### вот тут происходит переключение в RadioButton #######
self.group = QActionGroup(self)
self.group.addAction(self.item3Act)
self.item3Act.setChecked(True)
#############################################################
self.exitAct = QAction(self.tr("exit"), self)
self.connect(self.exitAct, SIGNAL("triggered()"), self.close)

def createMenus(self):
self.fileMenu = self.menuBar().addMenu(self.tr("MyMenu"))
self.fileMenu.addAction(self.item1Act)
self.fileMenu.addAction(self.item2Act)
self.fileMenu.addAction(self.item3Act)
self.fileMenu.addAction(self.exitAct)

app = QApplication(sys.argv)
widget = MainWindow()
widget.show()
sys.exit(app.exec_())
The gray Cardinal
gmorgunov
Ага, спасибо.
setCheckable — это понятно :).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB