2017-05-04 8 views
0

ここでは簡単な質問があることを願っています。私は、QT DesignerとMDI領域用のサブウィンドウを備えた非常に大きなGUIを作成しました。私はそれを.uiファイルから.pyファイルに変換するためにpyuic5を使用しました。ボタンを押すとそのサブウィンドウを開く機能を書いています。初めて私がボタンを押すと、それはうまく動作します。私が抱えている問題は、ボタンを押したときにMDIエリア内に空白のサブウィンドウが表示されることです。ボタンを押すたびに正しく表示させるにはどうすればよいですか?下のサブウィンドウの起動方法のコードを添付します。どんなアドバイスも非常に感謝しています。ボタンは、ボタン をクリック First Time Clicking the buttonGUI MDIサブウィンドウ最初のボタンを押すだけで表示されます

二度目のボタンをクリック

def windowaction(self): 

    sub = QtWidgets.QMdiSubWindow() 
    sub.setWidget(self.Load_Input) 
    sub.setObjectName("Load_Input_window") 
    sub.setWindowTitle("Load Input") 
    self.mdiArea.addSubWindow(sub) 
    sub.show() 

を初めてクリックしたときに呼び出され、あなたの時間とあなたの助け

コードをありがとうSecond Time Clicking the button

答えて

0

同じウィジェットオブジェクトを異なるQMdiSubWindowに追加すると、新しいオブジェクトを作成して新しいQMdiSubWindowに追加する必要があります。

def windowaction(self): 
    sub = QtWidgets.QMdiSubWindow() 
    Load_Input = LoadInput() 
    sub.setWidget(Load_Input) 
    sub.setObjectName("Load_Input_window") 
    sub.setWindowTitle("Load Input") 
    self.mdiArea.addSubWindow(sub) 
    sub.show() 
+0

ありがとうございました。そのコードを試してみると、 "' TypeError: 'QWidget'オブジェクトが呼び出し可能ではないというエラーが表示されます。唯一の違いは、 'Load_Input = LoadInput()'と同じであることに気付きました。 '()'はどのような違いがありますか。また、私は新しいオブジェクトを作成しているので、新しいオブジェクトを作成する前に古いオブジェクトを削除するとよいでしょうか?最後に、「ロード入力」ウィンドウの1つだけを一度に開くようにしたいと思います。 – laxer

+0

あなたのコードでは、self.Load_Input =と似たようなことがあったはずです。コード行を表示したり、プロジェクトをgithub、dropboxなどで共有することができます。 – eyllanesc

+0

私はちょうどここに見つけることができるgithubリポジトリを作った。また、関数は 'Main.py'ファイルにあります。私はそれをすべて分けたままにしようとしています。https://github.com/simplesports/WorkHelper – laxer

関連する問題