GUI basée balisage pour python
-
21-08-2019 - |
Question
Je veux me lancer dans la programmation des applications graphiques graves, mais quand je regarde les choses comme Swing / SWT de Java, je ne peux pas aider mais la programmation HATE une interface graphique en créant des objets « widget » et les remplir et appeler des méthodes sur eux.
Je pense que la conception de l'interface graphique doit être fait dans un fichier à base de texte séparé dans un format de balisage, qui est lu et rendu (par exemple HTML), de sorte que la conception de l'interface est pas couplée étroitement avec le reste du code.
Je l'ai vu HTMLayout et j'aime l'idée, mais jusqu'à présent, il semble seulement en C ++.
Je suis à la recherche d'une bibliothèque Python (ou même un projet WIP) pour faire interface utilisateur graphique balisage.
UPDATE
La raison pour laquelle je ne peux pas accepter le xml de QT est la même raison que je déteste l'approche programatic; vous assemblez chaque widget de séparément, et en spécifiant chaque propriété de celui-ci sur une ligne distincte. Il ne fournit aucun avantage par rapport à ce faire le chemin programatic.
La solution
Vous pouvez essayer XUL de Mozilla. Il prend en charge Python via XPCOM.
Voir ce projet: pyxpcomext
XUL est pas compilé, il est emballé et chargé à l'exécution. Firefox et bien d'autres grandes applications utilisent, mais la plupart d'entre eux utilisent Javascript pour le script au lieu de Python. Il y a un ou 2 en utilisant Python bien.
Autres conseils
Vous devriez regarder dans Qt, que vous pouvez utiliser à partir de Python en utilisant l'excellente interface PyQt (pourquoi ils ne l'appellent QtPy --- cutiepie, l'obtenir? --- Je ne comprendrai jamais).
Avec Qt, vous pouvez avoir le choix de construire de votre interface graphique par programmation (que vous ne voulez pas), ou en utilisant des balises XML. Ce fichier XML peut être soit compilé à coder au préalable, ou chargé avec une commande courte. Ce dernier est la façon normale de travailler en utilisant PyQt.
Qt est polyvalent, de haute qualité, multi-plateforme, et vous êtes probablement déjà l'utiliser sans le savoir. L'application client Skype officiel est écrit dans Qt si je me souviens bien.
Modifier Il suffit d'ajouter quelques liens de sorte que le OP se faire une idée de ce ...
- courte introduction à la programmation Qt en C ++ - remarquez l'utilisation du Qt designer, qui délivre .ui fichiers, ce qui est un format XML dont je me souviens était également très facile de travailler avec la main. la programmation PyQt est très similaire, à l'exception d'être dans un langage de programmation beaucoup plus facile bien sûr: -)
- infos sur PyQt sur le wiki Python
- livre en ligne sur la programmation PyQt
Qu'en est-il wxPython? Je commence à peine à travailler avec elle, mais il y a un outil - XRC Resource Editor - qui vous permet d'assembler votre interface graphique, qui est ensuite écrit dans un fichier XML. Si je comprends bien, votre application Python charge le fichier XML, plutôt que d'avoir un tas de code de GUI-layout mélangé avec votre code Python.
Si vous choisissez une langue comme Tcl ou Python et Tk pour le développement de votre application, il devient assez trivial d'écrire votre propre DSL pour décrire l'interface. Vous pouvez, par exemple, écrire un DSL qui vous permet de créer des menus comme ceci:
menubar {
File => {
Open => cmd.open
Save => cmd.save
Exit => cmd.exit
}
Edit => {
Cut => cmd.cut
Copy => cmd.copy
Paste => cmd.paste
}
}
... et vos principales formes de l'interface graphique comme celle-ci:
form PropertiesForm {
Font: [fontchooser]
Foreground: [foregroundChooser]
Background: [backgroundChooser]
}
form NewUserForm {
username [_____________________]
[] administrator
enable the following features:
() feature 1
() feature 2
() feature 3
}
notebook {
Properties => PropertiesForm
New User => NewUserForm
}
... et ainsi de suite. Tcl excelle vraiment à vous laisser écrire DSLs comme celui-ci. Notez que cette fonctionnalité ne se construit pas pour Tcl en soi, mais la langue fait trivial DSLs. Une partie de ce genre de chose existe sur le wiki du Tcler, par exemple, il y a un code pour créer des menus similaires à ce que je décrit à Menus Made Easy .
Je pense, cependant, qu'après un certain temps, vous trouverez vraiment, vraiment difficile de faire de qualité professionnelle UIs de cette manière.
En tant que programmeur graphique qui a acquis une certaine expérience , vous devriez probablement rouler votre propre petite boîte à outils douce pour automatiser les tâches que vous vous surprendrez à faire encore et encore.
de XML, pas Python, mais regardez openlaszlo
fenêtres?
vous pouvez utiliser l'éditeur de WinForms dans Visual Studio, puis parler à l'assemblée de IronPython.