2016-04-09 20 views
0

İki farklı pyqt penceresi oluşturdum ve bunlardan birinde bir tuşa basarak daha küçük bir pencere açmalı. Benim kod hemen hemen tam olarak ne yapmam gerektiği gibi yapar, ancak daha küçük açılır pencerenin görüntülenme şekliyle ilgili bir sorun var.pyqt açılır pencere düzgün görüntülenmiyor

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_()) 

Hala pencere içinde işlevlerini kullanabilirsiniz, ama bunu taşıyabilir veya kapatın ve hiçbir orada olamaz:

Bu pencereler ve düğme işlevselliği görüntülemek için benim kodudur başlık çubuğu. Açılır pencerenin bu şekilde görünmesi için kodumda yanlış bir şey mi yaptım?

Düzenleme:

Orijinal Oturum izci penceresi: Original window Popup oturumu izci penceresi: bu kendi penceresinde diğer widget'ı göstermek için Popup window

+1

açılır penceredeki ebeveyn olarak ana pencere verilir onu sarmak için olduğunu, bunu düşünmek sorun. Bunun yerine self.window2 = Session_tracker() 'dır. – mguijarr

+1

Veya "QWidget" yerine bir "QDialog" yapın. – ekhumoro

cevap

0

, bir QMainWindow veya QDialog olmak zorundadır.

Bir seçenek, bir QDialog için senin Session_tracker mevcut dönüştürmek istemiyorsanız, sadece 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

Teşekkür ederim, düzenlemenizi kullandım ve koduma ekledim, ancak şimdi başka bir sorunla karşılaşıyorum. Açılır pencere orijinalden farklı şekilde görüntülenir ve herhangi bir nedenle, orijinal pencerede görüntülenen sütunlar artık açılır pencerede kaybolur. Bu soruya iki pencerenin ekran görüntülerini ekledim. Oturum izleyici penceresinin kodunu düzenlemedim, o yüzden neden açılır pencerede açsam onu ​​değiştiriyor? – DDVlad

+0

One, bir "QMainWIndow", diğeri ise bir "QDialog", bu yüzden pencereler farklı. Sütunlar orada değilse, o zaman UI dosyanızda değillerdir. Orijinal pencere ve açılır iletişim kutusu iki farklı widget'tır - StudentEnterprisePassport ve SessionTrackers - Onları aynı görünmesini beklemezdim. –

+0

Üzgünüm, bu benim hatamdı. Kullanıcı arayüzünü oluşturduğumda, onları hem QWidget olarak yaptım. Hatamı fark ettim ve şimdi değiştirdim, teşekkürler. – DDVlad