Найти - Пользователи
Полная версия: PyQT - Меню в QWidget или сетка в QMainWindow
Начало » GUI » PyQT - Меню в QWidget или сетка в QMainWindow
1
Mozart
Возник такой вопрос.

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

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

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

Заранее спасибо за ответ …
reclosedev
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 просто нужно перетащить мышкой лэйаут на окно.
Mozart
Спасибо, все получилось и работает, нужно было всего лишь добавить центральный виджет и на него ставить сетку, как вы и сказали, единственно что меня настораживает, так это то, что при использовании “self.setLayout(grid)” (как написано в доках), вылезает вот такая простыня (но все равно работает)- http://gyazo.com/4e9deb4b0cc65e4de5595061962a10e0 (скрин)

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

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