我在ui_main.py
文件中有一个gui(在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)
但我知道编辑生成的ui文件非常糟糕。如何在不编辑gui文件的情况下调整主窗口的大小?
答案 0 :(得分:3)
由pyuic
创建的ui模块(通过Qt Designer)只是一个带有几个初始化方法的简单助手类。
两种方法都从Qt Designer获取顶级ui类的实例(通常是QMainWindow
),然后将添加所有ui元素到那个例子。这确保了可以从顶级窗口小部件访问Qt Designer中创建的所有内容。
因此,您的MyForm
子类将self
(QMainWindow
的一个实例)传递给setupUi
,然后它变成您在ui文件中看到的MainWindow
变量
这意味着您只需执行以下操作即可调整主窗口的大小:
self.resize(300, 300)