Nous allons faire un petit programme avec PyGTK 3.0 qui fonctionne également pour PyGTK 3.4. Cette petite interface graphique vous apprendra comment diviser un programme en deux fichiers ou plus.
Vous pouvez visiter le tutoriel de Sebastian Pölsterl sur le nouveau PyGTK 3, voici le nouveau tutoriel, je laisse le lien:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
C'est le blog de Sebastian.
Une critique de ce tutoriel par Sebastian est qu'il n'enseigne pas comment diviser un programme en parties ou en plusieurs fichiers, il aurait été bien qu'il montre un exemple de comment le faire avec PyGTK 3.
Tous les programmes volumineux et complexes sont divisés en de nombreux fichiers et les fichiers sont même placés dans d'autres répertoires, c'est-à-dire qu'ils sont situés dans des dossiers différents.
Commençons par le petit exemple:
Voici le code d'écriture dans un seul fichier appelé gui.py. Nous ouvrons l'éditeur de texte Gedit ou l'éditeur que nous utilisons le plus, nous copions le code ci-dessous et le sauvegardons sous gui.py
de gi.repository import Gtk class gui (): def on_open_clicked (self, button): print "\" Open \ "bouton a été cliqué" def on_close_clicked (self, button): print "Closing application" Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. button = Gtk.Button (label = 'Open') self.button.connect ("cliqué", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Close') self.button.connect ("cliqué", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
def on_open_clicked (self, button): print "\" Open \ "bouton a été cliqué"
C'est une fonction qui est activée dans le terminal lorsque l'on clique sur le bouton d'ouverture. Le signal pour l'activer est:
self.button.connect ("cliqué", self.on_open_clicked) def on_close_clicked (self, button): print "Closing application" Gtk.main_quit ()
C'est une fonction qui s'active lorsque l'on clique sur le bouton de fermeture.
fermez le programme que nous exécutons.
le signal pour l'activer est
self.button.connect ("clicked", self.on_close_clicked) depuis gi.repository import Gtk ### nous invoquons les bibliothèques PyGTK ### class gui (): ### la définition de classe appelée gui est la classe principale # ##
Déclaration des widgets: un widgets est un programme prédéterminé par les bibliothèques GUI que nous utilisons. Par exemple, un widget est un bouton, une fenêtre, une boîte, etc. Ce sont les widgets que nous déclarons dans notre programme.
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # open button #### self.button = Gtk.Button (label = 'Close') #### close button #### self.window.add (self.box) #### la boîte est contenue dans la fenêtre appelée window #### self.box.pack_start (self.button, True, True, 0) ##### le bouton est contenu dans la boîte appelée box ### self.window.show_all () ## # nous montrons toute la fenêtre ### gui = gui () ### créer un objet gui ####
Nous plaçons notre programme dans un dossier appelé simple dans notre cas sur le bureau
Nous ouvrons le dossier avec le terminal, dans mon cas j'utilise Nemo de Linux Mint 14.
Pour compiler nous mettons dans le terminal python gui.py
regarder la photo.
Nous pouvons maintenant voir notre petit programme ou nouveau widget créé avec les bibliothèques PyGTK 3
C'est une simple fenêtre avec deux boutons.
Maintenant, nous divisons le programme en trois parties, ci-dessous je laisse le code des trois fichiers.
Premier fichier gui.py
depuis gi.repository import Gtk depuis destroy import destroy depuis io import io class gui (destroy, io): def __init __ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Open') self.button.connect ("cliqué", self.on_open_clicked ) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ("cliqué", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
Deuxième fichier io.py
class io: def on_open_clicked (self, button): print "\" Open \ "bouton a été cliqué"
Troisième fichier destroy.py
depuis gi.repository import Gtk class destroy: def on_close_clicked (self, button): print "Closing application" Gtk.main_quit ()
Nous plaçons les trois fichiers dans le même dossier dans notre cas, le dossier est appelé simple divisé.
Pour compiler les trois fichiers. Nous ouvrons le dossier avec le terminal et le remettons simplement dans le terminal
python gui.py
Modifications apportées au code gui.py
from destroy import destroy instruction ### pour importer notre fichier destroy.py ### depuis io import io ### instruction pour importer notre fichier io.py ### class gui (destroy, io): #### vers la classe main nous ajoutons les sous-classes destroy et io ####
Vous pouvez voir que la phrase
def on_open_clicked (self, button): print "\" Open \ "bouton a été cliqué"
Ce n'est pas dans gui.py, mais dans le fichier io.py
Phrase
def on_close_clicked (soi, bouton):
imprimer "Clôture de la candidature"
Gtk.main_quit ()
il se trouve dans le fichier destroy.py
Ainsi, nous pouvons diviser un programme en plusieurs fichiers situés dans différents répertoires en même temps.
D'autre part, Python est un pilier du logiciel libre, et il est adapté pour fonctionner avec GTK 3.6 /3.8, son nom est PyGTK. L'adaptation de Python pour KDE s'appelle PyQT.
Python est adapté pour Mac OS et WINDOWS.
J'espère que ce mini tutoriel PyGTK3 vous a été utile. Ils peuvent faire toutes les critiques constructives qu'ils souhaitent.
Je connais aussi quelques Gtk 3.4 /3.6 et Vala GTK 3.4 / 3.6.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Enfin, les utilisateurs de KDE s'excusent de ne pas avoir fait un mini tutoriel pour KDE.
Dans kde, je préfère utiliser kdevelop (je pense que c'est comme ça que ça s'appelle) pour créer l'interface graphique à l'aise mais j'ai encore du mal à trouver les processus pour que cela se produise x chose: '(
Idéal pour ceux d'entre nous qui utilisent Python: D!
Salutations!
Bonjour, je suis cette communauté depuis longtemps et je ne suis pas très sûr si c'est la première fois que je commente ou si je l'ai déjà fait avant soy (je ne suis pas très enclin à écrire des commentaires sur le web vraiment). Le fait est que je le fais pour laisser une suggestion à Elav et KZKG ^ Gaara en tant qu'administrateurs, et je pense que ce serait une bonne idée d'ajouter un plugin pour la coloration de la syntaxe maintenant que dernièrement je vois plus de messages avec du code dans différents langages de programmation. Je sais qu'il y a pas mal de plugins mais je n'en ai pas essayé puisque je ne suis pas un utilisateur de wordpress, donc je vous laisse réfléchir à la viabilité de la demande. Je profite de l'occasion pour demander au reste des lecteurs ce qu'ils pensent de l'idée, car je sais qu'il y a des gens qui préfèrent lire le code sans aucune parure. Je m'excuse si cela a déjà été commenté ici et qu'il a été rejeté pour une raison quelconque, car je ne me souviens pas avoir vu une discussion sur le sujet.
La vérité est que j'aimerais avoir la possibilité de colorer la syntaxe pour mettre en évidence le code des langages de programmation.
Cela aiderait les utilisateurs qui souhaitent apprendre les langages de programmation.
Mais bon, je suis aussi à l'aise avec le forum et que l'on puisse discuter et apprendre ensemble.
GNU Emacs est plus confortable, car au moins vous devez choisir dans quel vérificateur de langage de programmation vous voulez travailler (si vous ne voulez pas plus de poids pour votre processeur, utilisez GNU Nano et profitez du minimalisme à son meilleur).
Elio, nous parlons de WordPress. Implémenté sur le blog Desde Linux. Il n'a pas pour fonction de colorer les lettres des messages.
Oh je suis désolé.
Naaa emacs est confortable pour ceux qui ont 84 doigts XD .., les gens normaux, textmate, sublimetext ou notepad ++ xd
La chose invraisemblable est de ne pas avoir appris à taper, ce qui est nécessaire pour être capable de bien gérer GNU Emacs et ses raccourcis clavier. De plus, son interface graphique vous facilite l'utilisation de ses menus (il peut être utilisé sous Windows, mais il n'est pas recommandé de le faire avec le mode normal mais avec le mode invite de commande pour que win32 ne boycotte pas votre script).
Tutoriel très cool. Mais au fait, le code source python n'est pas compilé, c'est un langage interprété.
Il peut être compilé en pseudo-code. Ce n'est pas un langage machine mais des octets qui représentent quelque chose pour l'interpréteur, mais le processus est également appelé compilé. En ce sens, il est possible de dire que quelque chose est compilé.
Peut-être vaut-il mieux apprendre pytgk2 car la dernière version disponible pour Windows est la 2.24. La série 3 brille par son absence. Et les mauvaises langues disent que gnome casse tous les apis dans chaque nouvelle version.
Je programme une maquette avec GTK 3.4 / 3.6 et la vérité est qu'ils vous brisent la patience et la tête, vous devez réécrire le code, maintenant je comprends pourquoi les gens de Linux Mint se plaignent de GTK et du projet GNOME.
Pour ceux de MINT, je suis d'accord avec GTK 2.4 cela ne s'est pas produit.
Bon tutoriel et références.
Juste un détail, puisque le code a été inséré, en Python les indentations sont obligatoires et doivent être respectées dans l'exemple de code.
Salutations!
Pouvez-vous nous expliquer en quoi consistent les identifications obligatoires en Python? Je vous dis la vérité, je n'ai jamais entendu cela.Je suis très habitué aux forums PyGTK 2/3 en anglais et peut-être que je les néglige.
En Python, vous n'utilisez pas de clés comme en C ou de blocs de début / fin comme en Pascal, mais tout est compris à travers l'indentation que vous donnez au code. Autrement dit, les blocs sont reconnus comme étant indentés. C'est une fonctionnalité que j'aime particulièrement. Vous évitez d'écrire des clés et des choses comme ça.
Je n'aime juste pas ça, il semble plus simple de mettre deux petites touches ou un std :: endl;, que d'être vu si la ligne xd est bien tabulée
: p Votre professeur de programmation mettra un 0 pour vous. Ou pire, ils vous licencieront de votre travail. Ce qui compte le plus, c'est que le code soit lisible avec tout ce que cela implique
se terminant par des accolades fermantes, cela me rend XD beaucoup plus lisible.
Sérieusement???
int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}
Vous voyez? Sans indentations, ce n'est pas très bien compris. Et c'est facile. Avec un plus complexe, seul le compilateur le comprend. Le fait est que, puisque vous DEVEZ de toute façon indenter (pour que les humains comprennent le code), pourquoi serait-il redondant et utiliser des séparateurs? Assez d'indentation et c'est tout.
Bien sûr, rien n'est compris, car vous ne respectez pas les règles de bonne écriture pour un programme c / c ++. Ce que vous avez fait est valable pour tout, comme l'imbrication d'une fonction, à l'intérieur d'une fonction à l'intérieur d'une autre fonction qui est à l'intérieur d'une autre, alors je veux vous voir xd si vous êtes capable de le comprendre.
au fait, avec deux regards, ce code est facilement compréhensible xD
Ce que j'ai fait, je l'ai fait exprès pour vous montrer que sans indentation, même si elle compile, il est extrêmement difficile de comprendre un code. Vous avez donc 2 règles: indenter et englober avec des délimiteurs. Mais c'est redondant. En Python, un tel code n'est tout simplement pas accepté par l'interpréteur. Et vous n'avez qu'une seule règle: le retrait. Facile.
Mais bon, chacun avec ses goûts.
Les deux sont bons, le indenté et le non-indenté, à mon avis je préfère le style point-virgule ou rubis, similaire au python mais l'indentation n'est pas nécessaire.
C'est ainsi qu'il est mieux compris: P:
echo 'int main (int argc, char * argv []) {nom_programme = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {cas 'v': verbeux = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; par défaut: fprintf (stderr, »Mauvaise option % s \ n », argv [1]); usage ();} ++ argv; –argc;} if (argc == 1) {do_file (" print.in ");} else {while (argc> 1 ) {do_file (argv [1]); ++ argv; –argc;}} return (0);} '| perl -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'
Salutations 😀
Je pense que Carlos veut dire que là où le code sort, il n'y a pas de retrait. Cela ne fonctionnera pas avec le copier-coller. Je ne sais pas si le tag existe lors de la création d'un post
pour saisir le code de langue. Ce serait bien qu'ils le mettent si cela n'existe pas.
J'ai déjà vu quel est le problème: la balise CODE supprime tous les espaces et tabulations (elle ne devrait pas faire ça !!!) Mais si vous mettez un nbsp dessus, le code semble bon. A0 en hexadécimal (160 en déc) bien que je pense que cela puisse dépendre de la police (je ne sais pas). S'il est utilisé, il se présente comme suit:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Que dans mes tests ça a l'air bien, mais je n'ai pas d'aperçu quand je poste des réponses (et il devrait y en avoir !!!) Si ça ne sort pas, ce n'est pas ma faute culpa
Regardez les exemples que Sebastian Pölsterl donne dans son tutoriel PyGTK 3, Sebastian ne place pas d'étiquettes.
Exemple :
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
vous pouvez voir tout le tutoriel de Sebastian.
Je ne sais pas a quoi tu fait référence. Ce que je dis, c'est qu'ici, dans les messages, il n'est pas possible d'utiliser la balise HTML "CODE" pour que ce que vous mettez comme code et qu'il ressorte bien en retrait. Sur la page que vous référez, si vous regardez les sources de la page, vous verrez qu'elle n'utilise pas CODE mais utilise d'autres délimiteurs HTML.
Ce n'est pas contre le code que vous avez inséré mais plutôt pour signaler une faille dans le système de publication de ce site. Ce que, peut-être, les administrateurs peuvent résoudre.
Quand je parle de balises, je parle évidemment de HTML, pas de Python. Dans tous les cas, si vous mettez du code sans indentation en Python, cela ne fonctionnera tout simplement pas. Si un débutant vient et copie le code tel qu'il apparaît dans cet article et essaie de l'exécuter, il échouera. Vous pouvez être frustré car vous êtes un débutant. Encore une fois, la faute n'est pas la vôtre; et dans ma réponse précédente immédiate, ce que j'ai fait était de donner un moyen de résoudre le problème à partir du niveau de l'utilisateur qui publie.
Vous avez absolument raison, j'aurais dû télécharger des photos au lieu de copier le code.
pour montrer comment les instructions sont correctement ordonnées dans PyGTK 3.
Pour programmer avec python je recommande d'utiliser Eclipse avec le plugin PyDev, ou Pychar m
Comme commenté ci-dessus, c'est exactement pourquoi je n'aime pas python, à cause du problème d'indentation. Comme nous l'avons vu, faire du copier-coller ne fonctionnera pas, ce qui ne se produit pas avec d'autres langages tels que C, Java, PHP, etc.
La chose de la lisibilité, nous appliquons un embellisseur de code (comme http://indentcode.net/ ) et prêt,
Le moche est fixe, mais s'il n'y a pas d'indentation et que la logique est altérée, on sonne ..
Je suis nouveau sur PyGTK, est-il possible d'interagir avec des scripts shell dans ce langage?
Merci pour le tutoriel.
Salutations.