2

ファイルにGUIがあり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) 

しかし、生成された ui ファイルを編集するのは非常に悪いことです。GUI ファイルを編集せずにメイン ウィンドウのサイズを変更するにはどうすればよいですか?

4

1 に答える 1

3

(Qt Designer 経由で)によって作成された ui モジュールpyuicは、いくつかの初期化メソッドを持つ単純なヘルパー クラスです。

どちらのメソッドも、Qt Designer から最上位の u​​i クラスのインスタンス (通常はQMainWindow)を取得し、すべての ui 要素そのインスタンスに追加します。これにより、Qt Designer で作成されたすべてのものが最上位のウィジェットからアクセスできるようになります。

したがって、MyFormサブクラスはself(のインスタンスQMainWindow) をに渡します。これが ui ファイルに表示される変数にsetupUiなります。MainWindow

これは、次のようにするだけでメイン ウィンドウのサイズを変更できることを意味します。

self.resize(300, 300)
于 2012-08-31T17:23:46.740 に答える