Изменение размера главного окна в Python с помощью Qt
У меня есть графический интерфейс ui_main.py
файл (разработан в Qt Designer). Я загружаю это в моем главном *.py
файл таким образом:
from PyQt4 import QtGui, QtCore
from ui_main import Ui_MainWindow
class MyForm(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
...
Файл ui_main.py:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(667, 559)
Мне нужно изменить размер моего главного окна во время запуска приложения. Моя главная проблема в том, что я не могу получить доступ к объекту главного окна.
self.ui.MainWindow.resize(300,300)
AttributeError: 'Ui_MainWindow' object has no attribute 'MainWindow'
Если я добавлю к ui_main.py
файл:
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.uiui = MainWindow
Я могу изменить размер моего главного окна с помощью:
self.ui.uiui.resize(300,300)
Но я знаю, что очень плохо редактировать сгенерированный файл пользовательского интерфейса. Как я могу изменить размер моего главного окна без редактирования графического файла?
1 ответ
Модуль пользовательского интерфейса, созданный pyuic
(через Qt Designer) - это простой вспомогательный класс с парой методов инициализации.
Оба метода берут экземпляр пользовательского класса верхнего уровня из Qt Designer (обычно QMainWindow
), а затем добавьте все элементы пользовательского интерфейса в этот экземпляр. Это гарантирует, что все созданное в Qt Designer доступно из виджета верхнего уровня.
Так что ваши MyForm
проходы подкласса self
(пример QMainWindow
) чтобы setupUi
, который затем становится MainWindow
переменная, которую вы видите в вашем пользовательском файле.
Это означает, что вы можете изменить размер основного окна, просто выполнив:
self.resize(300, 300)