2012-12-11 1 views
0

Hé les gars, j'ai rencontré un problème que je ne sais pas comment résoudre. Je viens de rencontrer une équipe pour concevoir une interface graphique en python en utilisant PyGtk.Création de zones cliquables à l'écran avec PyGtk

Je dois créer une interface graphique avec des zones cliquables à l'écran. J'ai besoin de diviser l'écran en 12 zones égales avec un carré dans le centrer. Comme ceci: http://imgur.com/PMT3m

Je pensais utiliser des boutons mais les boutons sont rectangulaires. Est-il possible de créer des boutons d'une forme différente de ceux montrés dans l'image? Si je pouvais, ces boutons se redimensionneraient si je changeais la taille de la fenêtre? L'autre option à laquelle je pensais était de créer un écouteur d'action qui écoute les clics de souris, rassemble les données de position sur le clic puis appelle les méthodes spécifiques en fonction de la région où il se trouvait. Dans cette méthode, j'aurais besoin utiliser une image statique comme arrière-plan qui n'est pas souhaitable. Je voudrais le rendre résistible si possible.

Est-ce que quelqu'un a déjà fait quelque chose comme ça? Si oui, quelle méthode avez-vous utilisé? Je n'ai pas besoin d'écrire du code pour moi, j'ai juste besoin d'aide pour commencer. Quelle méthode semble plus saine? Je n'ai pas beaucoup d'expérience de travail avec d'autres outils d'interface graphique python, donc je suis ouvert à d'autres suggestions telles que pyQt ou wxPython.

Merci d'avance!

Répondre

1

Si vous avez seulement besoin d'obtenir un retour du clic, alors en utilisant un GtkDrawingArea et en écoutant là pour les clics de souris serait suffisant. Vous n'aurez pas besoin d'utiliser une image statique pour cela, vous pouvez simplement utiliser cairo et dessiner vous-même la forme, en fonction de la taille de la zone de dessin, afin qu'elle ait toujours la forme que vous voulez.

Cependant, si vous avez prévu d'utiliser une interaction massive avec la souris (drag and drop de formes, etc.), l'utilisation d'un canevas tel que GooCanvas serait la meilleure solution. Sachez également que pyGTK est uniquement pour GTK 2, disponible sous Linux et Windows, mais qu'il est obsolète par pyGObject pour GTK 3 (sur Linux, car il n'y a actuellement aucun programme d'installation tout-en-un officiel de pyGObject pour Windows).

Pour dessiner dans une GtkDrawingArea, vous utiliserez le signal expose-event sur GTK 2, et le signal draw sur GTK 3.

Questions connexes