使用Qt在Python中调整主窗口的大小

时间:2012-08-31 07:26:59

标签: python resize pyside mainwindow pyuic

我在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文件的情况下调整主窗口的大小?

1 个答案:

答案 0 :(得分:3)

pyuic创建的ui模块(通过Qt Designer)只是一个带有几个初始化方法的简单助手类。

两种方法都从Qt Designer获取顶级ui类的实例(通常是QMainWindow),然后添加所有ui元素那个例子。这确保了可以从顶级窗口小部件访问Qt Designer中创建的所有内容。

因此,您的MyForm子类将selfQMainWindow的一个实例)传递给setupUi,然后它变成您在ui文件中看到的MainWindow变量

这意味着您只需执行以下操作即可调整主窗口的大小:

self.resize(300, 300)