Je n'ai commencé que récemment à programmer et à utiliser Python (PyQt) en particulier. J'ai mon principal QMainWindow
classe. Mais je voulais la séparer des widgets de l'interface utilisateur, afin que tous les éléments de Windows (menus, barres d'outils, boutons communs) soient dans la classe QMainWindow
mais tous les widgets spécifiques au programme/à l'interface utilisateur (boutons poussoirs, combobox, images, cases à cocher, etc.) se trouvent dans un dossier séparé. QWidget
classe. Mais je ne suis pas sûr de bien faire les choses.
- J'ai un problème avec les mises en page - quelque chose d'invisible recouvre les menus de sorte qu'ils ne sont pas cliquables par la souris, je pense que je n'ajoute pas mon widget UI à la fenêtre principale correctement.
Voici comment je fais :
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)
- J'ai vu d'autres programmes Python où les applications sont divisées en un grand nombre de petits fichiers de code (si je comprends bien, tout avoir dans une classe principale est illisible ou ingérable).
Quelle est votre suggestion pour décomposer le code en petits morceaux ? Comment le faire mieux ? Ou bien, pour l'interface utilisateur, tout peut être regroupé en un seul endroit ? Devrais-je diviser le code/les classes de l'interface utilisateur en fichiers séparés ?
Merci.
[SOLVÉ]
J'ai trouvé mon erreur - j'ai supprimé le main_widget de la classe de widget UI (maintenant tous les widgets UI sont placés directement sur le widget de la classe UI elle-même) et je fais seulement ceci :
self.main_layout.addWidget(self.form_widget)
plus de problèmes avec les menus