2016-04-09 13 views
0

私は2つの異なるpyqtウィンドウを作成しました。そのうちの1つの中でボタンを押すと、別の小さなウィンドウが表示されます。私のコードはちょうど私がそれを行うべきであるものとほぼ正確には違いますが、小さなポップアップウィンドウが表示される方法には問題があります。pyqtポップアップウィンドウが正しく表示されない

これは、窓やボタンの機能を表示するための私のコードです:

from PyQt4 import QtGui 
from EnterprisePassport import Ui_StudentEnterprisePassport 
from Session_tracker import Ui_Session_tracker 

class StudentEnterprisePassport(Ui_StudentEnterprisePassport): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.setupUi(self) 
     self.sessionTracker_btn.clicked.connect(self.handleButton) 
     self.window2 = None 

    def handleButton(self): 
     if self.window2 is None: 
      self.window2 = Session_tracker(self) 
      self.window2.show() 

class Session_tracker(Ui_Session_tracker): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.setupUi(self) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = StudentEnterprisePassport() 
    window.show() 
    sys.exit(app.exec_()) 

私はまだウィンドウ内の機能を使用することができますが、私はそれを移動することはできません、またはそれを閉じ、なしありタイトルバー。ポップアップウィンドウがこのように表示されるように私のコード内で何か間違ったことをしましたか?

編集:

オリジナルセッショントラッカーウィンドウ:Original window ポップアップセッショントラッカー・ウィンドウ:Popup window

+1

にポップアップウィンドウを、それをラップすることですが、親としてのメインウィンドウを与えられて、私はそれを考えます問題です。代わりに 'self.window2 = Session_tracker()'を実行してください。 – mguijarr

+1

あるいは 'QWidget'の代わりに' QDialog'にしてください。 – ekhumoro

答えて

0

それ自身のウィンドウ内の他のウィジェットを示すために、それはQMainWindowまたはQDialogなければなりません。

一つのオプション、既存のSession_trackerQDialogに変換したくない場合は、ちょうどQDialog

def handleButton(self): 
    if self.window2 is None: 
     self.window2 = QtGui.QDialog(self) 
     lay = QtGui.QVBoxLayout() 
     self.window2.setLayout(lay) 
     self.session_tracker = Session_tracker(self.window2) 
     lay.addWidget(self.session_tracker) 
     self.window2.show() 
+0

ありがとうございました、あなたの編集を使用して私のコードに追加しましたが、私はもう別の問題に直面しています。ポップアップウィンドウが元のウィンドウと異なって表示されているため、何らかの理由で元のウィンドウ内に表示されていた列がポップアップウィンドウに表示されなくなりました。 2つのウィンドウのスクリーンショットを質問に追加しました。セッショントラッカーウィンドウのコードを編集していないので、なぜポップアップウィンドウを開いてもそれを変更するのですか? – DDVlad

+0

1つは 'QMainWIndow'で、もう1つは' QDialog'です。その理由はウィンドウが異なるからです。列が表示されていない場合は、UIファイルに表示されません。元のウィンドウとポップアップダイアログは、StudentEnterprisePassportとSessionTrackersという2つの異なるウィジェットです。同じように見えるとは思わないでしょう。 –

+0

申し訳ありませんが、それは私のせいでした。 UIを作成したとき、私は両方をQWidgetとして作成しました。私は自分の間違いを認識し、今それを変更しました、ありがとう。 – DDVlad

関連する問題