Recientemente he empezado a programar Python (PyQt) en particular. Tengo mi clase principal QMainWindow
. Pero quería separarlo de los widgets UI, de modo que todos los elementos de Windows (menús, barras de herramientas, botones comunes) estén en QMainWindow
, pero todos los widgets específicos del programa/UI (botones de botones, cuadros combinados, imágenes, casillas de verificación, etc.) están en un QWidget
clase. Pero no estoy seguro si estoy haciendo esto bien.PyQt: cómo agregar un widget de IU separado a QMainWindow
- tengo un problema con diseños - algo invisible está cubriendo los menús de modo que no son se puede hacer clic con el ratón, creo que no estoy añadiendo mi widget de interfaz de usuario a la ventana principal correctamente
he aquí cómo lo hago:
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)
- que he visto otros programas Python donde las aplicaciones se dividen en una gran cantidad de pequeños archivos de código (como yo lo entiendo, tener todo en la clase principal se puede leer o inmanejable).
¿Cuál es su sugerencia acerca de descifrar el código en trozos pequeños? ¿Cómo está mejor? ¿O para UI todo puede estar en un gran lugar? ¿Debería dividir el código/clases de IU en un archivo separado?
Gracias.
[SOLUCIONADO]
he encontrado mi error - He eliminado el main_widget de la clase widget de interfaz de usuario (en la actualidad todos los widgets de interfaz de usuario se colocan directamente en el widget de la clase de interfaz de usuario en sí) y sólo hacen esto:
self.main_layout.addWidget(self.form_widget)
no hay más problemas con los menús
He encontrado mi error. He eliminado el widget_principal del widget UI y me uso como el widget de retención para todos los otros pequeños widgets (botones, líneas de edición, etc.), y la clase principal simplemente crea una instancia del widget UI (ver arriba): el problema del menú resuelto. – linuxoid