Sono un po 'nuovo in PySide.ho un oggetto finestra principale che mostra un widget alla volta. Ho provato a cambiare il widget centrale della classe QMainWindow
per sostituire il widget visibile nella finestra quando si preme un pulsante. Il problema è che il pulsante premuto si trova nella classe Widget, non nella classe della finestra principale.Sostituisci CentralWidget in MainWindow
dire ...
class App(QtGui.QMainWindow):
def __init__(self):
super(App, self).__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage('Listo.') #Status Bar
self.login_screen = LoginScreen()
self.logged_in_screen = LoggedInScreen()
self.setCentralWidget(self.login_screen)
self.setGeometry(300, 300, 450, 600) #Window Size
self.setWindowTitle('PyTransactio - Client') #Window Title
self.setWindowIcon(QtGui.QIcon('icon.png')) #App Icon
self.show()
Il tasto premuto è nell'istanza login_screen
. Il metodo chiamato quando viene cliccato il pulsante è all'interno della classe LoginScreen
:
def login(self):
""" Send login data to the server in order to log in """
#Process
self.setParent(None)
Impostazione del widget di genitore di None
rimuove il widget (login_screen
) dalla finestra principale. Cosa devo fare per ottenere un altro widget (ad esempio logged_in_screen
) come il widget centrale della finestra principale quando viene premuto loginButton
(all'interno del widget login_screen
)?
Forse il metodo di accesso dovrebbe essere all'interno della classe della finestra principale? In tal caso, come posso collegare i tasti premuti in login_screen
con il metodo della finestra principale?
** ** QStackedWidget fatto la cosa. Inoltre, non ho mai pensato a 'self.parent(). Login'. Credo che dovrò lavorare sul mio OOP. Grazie mille! –
Quando si imposta come widget centrale, QMainWindow assume la proprietà di quel widget. Quando si imposta l'altro widget come widget centrale, il primo viene distrutto, il che è negativo. –
@HrvojeT Sì, ecco perché la mia risposta usa 'QStackedWidget' e non quell'hack, che probabilmente richiede un po 'di brutto codice per funzionare correttamente. – Bakuriu