Форум сайта python.su
Меньше кода – не значит лучше.
В данном случае, я бы написао маленькую локальную функцию, которая делает всю ту фиговерть, расположенную в цикле, написал бы пару строк докстрина и дальше просто вызвал бы её нужное количество раз с нужными аргументами. Код был бы куда читаемее.
А такие сложные многоуровневые структуры, как 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])])
)])
Отредактировано (Июль 4, 2010 23:46:10)
Офлайн
В данном случае, я бы написао маленькую локальную функцию, которая делает всю ту фиговерть, расположенную в цикле, написал бы пару строк докстрина и дальше просто вызвал бы её нужное количество раз с нужными аргументами. Код был бы куда читаемее.Да спасибо!, я сначала тоже думал на счет функции, но потом отказался)). Что же попробую.
А такие сложные многоуровневые структуры, как menu_list трудно читаются и правятся.Да тут я пожалуй и в правду перегнул палку)))
И никогда такие структуры нельзя писать в одну строчку…
Обрати внимание на PEP-8.
Офлайн
В общем кому интересно!
набрел, в примерах к 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, я смотрю там много интересного и полезного, вдруг что-то еще полезное попадется))
Отредактировано (Июль 9, 2010 18:09:47)
Офлайн
Вот это самое правильное решение, потому что оно простое и читаемое.
P.S. Ууу… С этого начинать надо! :-)
Офлайн
P.S. Ууу… С этого начинать надо! :-)Не спорю! что же наверстаю)))
Офлайн
apologize828Блин, так я думал вас это решение не устроило :)
и там посмотрел как реализовали меню:лично мне понравилось.
Офлайн