Ho solo recentemente iniziato a programmare e Python (PyQt) in particolare. Ho la mia classe principale QMainWindow
. Ma volevo separarlo dai widget dell'interfaccia utente, in modo che tutte le finestre (menu, barre degli strumenti, pulsanti comuni) siano in QMainWindow
, ma tutti i widget specifici dell'interfaccia utente/programma (pulsanti, caselle combinate, immagini, caselle di controllo ecc.) Si trovano in un numero QWidget
separato classe. Ma non sono sicuro se lo sto facendo bene.PyQt - come aggiungere widget UI separati a QMainWindow
- Ho un problema con layout - qualcosa di invisibile sta coprendo i menu in modo che essi non sono cliccabili con il mouse, penso che non sto aggiungendo il mio widget di interfaccia utente per la finestra principale correttamente
Ecco come lo faccio:
class MyMainWindow(QMainWindow):
def __init__(self, parent = None):
super(MyMainWindow, self).__init__(parent)
self.main_widget = QWidget(self)
...
self.form_widget = FormWidget(self)
#This is my UI widget
self.main_layout = QVBoxLayout(self.main_widget)
self.main_layout.sizeConstraint = QLayout.SetDefaultConstraint
self.main_layout.addWidget(self.form_widget.main_widget)
#form_widget has its own main_widget where I put all other widgets onto
self.main_widget.setLayout(self.main_layout)
self.setCentralWidget(self.main_widget)
- ho visto altri programmi Python in cui le applicazioni sono suddivise in un sacco di piccoli file di codice (se ho capito bene, avere tutto in sulla classe principale è illeggibile o ingestibile).
Qual è il tuo suggerimento su come suddividere il codice in piccoli pezzi? Come va meglio? O per l'interfaccia utente può essere tutto in un unico grande posto? Dovrei interrompere il codice/le classi dell'interfaccia utente in un file separato?
Grazie.
[risolto]
ho trovato il mio errore - ho cancellato il main_widget dalla classe widget di interfaccia utente (ora tutti i widget UI sono posti direttamente sul widget Class UI stessa) e solo fanno questo:
self.main_layout.addWidget(self.form_widget)
nessun problema con i menu
Ho trovato il mio errore. Ho cancellato main_widget dal widget UI e uso se stesso come widget di mantenimento per tutti gli altri piccoli widget (pulsanti, editline ecc.) E la classe principale crea semplicemente un'istanza del widget UI (vedi sopra) - il problema del menu risolto. – linuxoid