Найти - Пользователи
Полная версия: Pyqt4, menubar через dict
Начало » GUI » Pyqt4, menubar через dict
1 2
ZZZ
Меньше кода – не значит лучше.
В данном случае, я бы написао маленькую локальную функцию, которая делает всю ту фиговерть, расположенную в цикле, написал бы пару строк докстрина и дальше просто вызвал бы её нужное количество раз с нужными аргументами. Код был бы куда читаемее.
А такие сложные многоуровневые структуры, как menu_list трудно читаются и правятся.

P.S. И никогда такие структуры нельзя писать в одну строчку…
menu_list=o_d([
('Файл', o_d([
('Создать...',['','Ctrl+N', 'Создание нового документа.',False,False,False]),
('Открыть...',['','Ctrl+O','Открытие существующего документа.',False,False,False]),
('Сохранить',['','Ctrl+S','Сохранение активного документа.',False,False,False]),
('Сохранить как...',['','','Сохранение активного документа под новым именем.',False,False,True]),
('Печать',['','Ctrl+P','Печать активного документа.',False,False,True]),
('Выход',['','','Завершение работы с приложением; сохранение документов.',False,False,False])])
),
('Правка',o_d([
('Отменить',['','Ctrl+Z','Отмена последнего действия.',False,False,True]),
('Вырезать',['','Ctrl+X','Удаление выделенного фрагмента в буфер обмена.',False,False,False])])
),
('Вид',o_d([
('Панель инструментов',['','','Вывод и скрытие панели инструментов.',True,True,False]),
('Панель форматирования',['','','Вывод и скрытие панели форматирования.',True,True,False])])
),
('Вставка',o_d([
('Дата и время...',['','','Вставка в текст текущих даты и/или времени.',False,False,False]),
('Объект',['','','Вставка в документ нового объекта.',False,False,False])])
),
('Формат',o_d([
('Шрифт...',['','','Выбор шрифта для выделенного фрагмента текста.',False,False,False]),
('Абзац...',['','','Форматирование текущего либо выделенных абзацев.',False,False,False])])
),
('Справка',o_d([
('Вызов справки',['','','Вывод содержания встроенной справки.',False,False,True]),
('О программе',['','','Вывод сведений о программе, ее версии и авторских правах.',False,False,False])])
)])
Лично я запутался в скобочках… Это не лисп!

P.P.S. Обрати внимание на PEP-8.
apologize828
В данном случае, я бы написао маленькую локальную функцию, которая делает всю ту фиговерть, расположенную в цикле, написал бы пару строк докстрина и дальше просто вызвал бы её нужное количество раз с нужными аргументами. Код был бы куда читаемее.
Да спасибо!, я сначала тоже думал на счет функции, но потом отказался)). Что же попробую.
А такие сложные многоуровневые структуры, как menu_list трудно читаются и правятся.
И никогда такие структуры нельзя писать в одну строчку…
Обрати внимание на PEP-8.
Да тут я пожалуй и в правду перегнул палку)))
Спасибо за советы.
apologize828
В общем кому интересно!
набрел, в примерах к PyQt4, на такую тему:
imageviewer
и там посмотрел как реализовали меню:лично мне понравилось.
теперь буду знать и пользоваться))
......................
def createActions(self):
self.openAct = QtGui.QAction("&Open...", self, shortcut="Ctrl+O",
triggered=self.open)

self.printAct = QtGui.QAction("&Print...", self, shortcut="Ctrl+P",
enabled=False, triggered=self.print_)

self.exitAct = QtGui.QAction("E&xit", self, shortcut="Ctrl+Q",
triggered=self.close)

self.zoomInAct = QtGui.QAction("Zoom &In (25%)", self,
shortcut="Ctrl++", enabled=False, triggered=self.zoomIn)

self.zoomOutAct = QtGui.QAction("Zoom &Out (25%)", self,
shortcut="Ctrl+-", enabled=False, triggered=self.zoomOut)

self.normalSizeAct = QtGui.QAction("&Normal Size", self,
shortcut="Ctrl+S", enabled=False, triggered=self.normalSize)

self.fitToWindowAct = QtGui.QAction("&Fit to Window", self,
enabled=False, checkable=True, shortcut="Ctrl+F",
triggered=self.fitToWindow)

self.aboutAct = QtGui.QAction("&About", self, triggered=self.about)

self.aboutQtAct = QtGui.QAction("About &Qt", self,
triggered=QtGui.qApp.aboutQt)

def createMenus(self):
self.fileMenu = QtGui.QMenu("&File", self)
self.fileMenu.addAction(self.openAct)
self.fileMenu.addAction(self.printAct)
self.fileMenu.addSeparator()
self.fileMenu.addAction(self.exitAct)

self.viewMenu = QtGui.QMenu("&View", self)
self.viewMenu.addAction(self.zoomInAct)
self.viewMenu.addAction(self.zoomOutAct)
self.viewMenu.addAction(self.normalSizeAct)
self.viewMenu.addSeparator()
self.viewMenu.addAction(self.fitToWindowAct)

self.helpMenu = QtGui.QMenu("&Help", self)
self.helpMenu.addAction(self.aboutAct)
self.helpMenu.addAction(self.aboutQtAct)

self.menuBar().addMenu(self.fileMenu)
self.menuBar().addMenu(self.viewMenu)
self.menuBar().addMenu(self.helpMenu)
.................
P.S. А вообще теперь надо все примеры посмотреть в PyQt, я смотрю там много интересного и полезного, вдруг что-то еще полезное попадется))
ZZZ
Вот это самое правильное решение, потому что оно простое и читаемое.

P.S. Ууу… С этого начинать надо! :-)
apologize828
P.S. Ууу… С этого начинать надо! :-)
Не спорю! что же наверстаю)))
Если бы не посмотрел пример, никогда бы и не узнал, что в QAction можно столько именнованных аргументов передавать.)
Просто до этого не встречал таких примеров,везде в основном QAction демонстрируется без именнованных аргументов.
А тут ни фига себе оказывается почти все что выставляем как set…
можно заталкнуть, как именнованный аргумент в сам QAction.
Даже в доках такого не встречал.
Zubchick
apologize828
и там посмотрел как реализовали меню:лично мне понравилось.
Блин, так я думал вас это решение не устроило :)
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