Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQT - Меню в QWidget или сетка в QMainWindow [RSS Feed]

#1 Дек. 25, 2012 15:47:58

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT - Меню в QWidget или сетка в QMainWindow

Возник такой вопрос.

При попытке создать меню (а так же тулбар и статусбар) при наследовании класса QtGui.QWidget - возникает ошибка, мол нету такого метода, естественно, т.к. в туториале меню создается из QMainWindow.

При использовании QMainWindow вроде бы все хорошо, и меню можно создать и виджеты которые необходимы, но есть одно но, сетка QtGui.QGridLayout() не работает, что есть плохо, т.к. это очень удобная штука и передвигать каждый виджет через object.move() не айс.

Собственно суть вопроса - можно ли как нибудь создать меню (тулбар и статус бар) в QWidget или же создать сетку grid в QMainWindow, или может быть как нибудь можно объединить эти 2 класса в 1 графическое приложение? C PyQT только начал знакомиться, поэтому возник такой вопрос.

Заранее спасибо за ответ …



Офлайн

#2 Дек. 25, 2012 16:46:29

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQT - Меню в QWidget или сетка в QMainWindow

Mozart
но есть одно но, сетка QtGui.QGridLayout() не работает
Что значит не работает? Как создаете в Designer или кодом? В QMainWindow есть понятие центрального виджета, http://doc.qt.digia.com/qt/qmainwindow.html#centralWidget
если не используются доквиджеты, нужно сначала создать его, и на него добавлять лэйауты. В коде будет так:
from PyQt4 import QtGui
 
class Example(QtGui.QMainWindow):
     
    def __init__(self):
        super(Example, self).__init__()
        widget = QtGui.QWidget(self)
        self.setCentralWidget(widget)
        layout = QtGui.QGridLayout(widget)
        for i in range(4):
            for j in range(4):
                button = QtGui.QPushButton("%s:%s" % (i, j), self)
                layout.addWidget(button, i, j)
...
В Designer просто нужно перетащить мышкой лэйаут на окно.

Отредактировано reclosedev (Дек. 25, 2012 16:47:27)

Офлайн

#3 Дек. 25, 2012 21:26:37

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT - Меню в QWidget или сетка в QMainWindow

Спасибо, все получилось и работает, нужно было всего лишь добавить центральный виджет и на него ставить сетку, как вы и сказали, единственно что меня настораживает, так это то, что при использовании “self.setLayout(grid)” (как написано в доках), вылезает вот такая простыня (но все равно работает)- http://gyazo.com/4e9deb4b0cc65e4de5595061962a10e0 (скрин)

Без него все работает отлично, еще раз спасибо …

————————————————————————
И еще вопрос, что бы не создавать новых тем.
Можно ли как нибудь в pyqt в QtGui.QLineEdit() просто добавить текст к уже написанному? Т.е. при использовании метода setText() он его просто заменяет на новый, а мне нужно что бы он дописывал текст к уже имеющемуся. Например в wxPython для этого есть функция write(), а в PyQT есть что либо подобное?



Отредактировано Mozart (Дек. 26, 2012 15:56:23)

Офлайн

#4 Дек. 26, 2012 21:14:53

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT - Меню в QWidget или сетка в QMainWindow

Разобрался сам, метод insert() - может это сделать.



Офлайн

  • Начало
  • » GUI
  • » PyQT - Меню в QWidget или сетка в QMainWindow[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version