Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4: как перечислить все пункты меню у QMainWindow? [RSS Feed]

#1 Дек. 20, 2008 16:32:45

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: как перечислить все пункты меню у QMainWindow?

Есть главное окно, у которого есть меню в несколько колонок, созданное с помощью QMainWindow.menuBar().
Как перебрать в цикле все пункты меню всех колонок, чтобы получить ранее сопоставленные им объекты QAction?
Посмотрев описания классов QAction, QMenu, QMenuBar я не нашёл подходящих методов :(.
self.menuBar().children() возвращает странное: список из трёх QMenu и одного QToolButton (четыре элемента). При этом колонок меню у меня реально две :/.



Офлайн

#2 Дек. 21, 2008 22:15:41

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: как перечислить все пункты меню у QMainWindow?

Вопрос всё ещё актуален. Неужели придётся делать список из этих QAction членом класса только для целей последующего перебора? Некрасиво, вроде…

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

Не понял, как добиться, чтобы пункты меню работали как radio-button? Тоже не вижу методов :/.



Офлайн

#3 Дек. 22, 2008 17:29:46

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: как перечислить все пункты меню у QMainWindow?

1) QMainWindow.menuBar().actions()
2) QActionGroup



Офлайн

#4 Дек. 22, 2008 20:30:15

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: как перечислить все пункты меню у QMainWindow?

Спасибо, помогло!



Офлайн

#5 Дек. 24, 2008 11:49:48

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: как перечислить все пункты меню у QMainWindow?

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



Офлайн

#6 Дек. 24, 2008 12:51:10

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: как перечислить все пункты меню у QMainWindow?

gmorgunov
Ага, спасибо.
setCheckable — это понятно :).



Офлайн

  • Начало
  • » GUI
  • » PyQt4: как перечислить все пункты меню у QMainWindow?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version