Menü in Button

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
gahleitner
User
Beiträge: 35
Registriert: Montag 1. Mai 2017, 09:57

Hallo!

Wie kann ich erreichen, dass beim Anklicken eines Buttons ein Menü öffnet. Von diesem Menü aus sollten verschiedene Funktionen abrufbar sein - z.B. von einem Button "öffnen" sollte "Bilder öffnen" und "Ordner öffnen" möglich sein. Ich möchte es in ein Plugin für Gimp integrieren. Muss es in Gimp anders definiert werden als sonst in Python?

Tschüss
Gerhard
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Mir erschließt sich nicht, was Du vorhaben könntest. Ein Filedialog ist in Gimp vorhanden, den brauchst Du nicht mit einem Plugin nachbilden zu wollen. Plugins lassen sich hingegen durch die Registrierung so in das vorhandene Menü einordnen, dass diese gruppiert werden können. Die Hierarchie ist unter dem Menüpfad "Hilfe -> Plugin-Browser -> wähle Baumansicht" einsehbar, <Image> ist der am häufigsten genutzte Wurzelknoten. Doch gleich darunter kannst Du einen neuen Menüpunkt anlegen, der dann im geöffneten Fenster mit im oberen Menü erscheint. Im Beispiel "Eigene".

menu="<Image>/Eigene"

Wie Du das dann weiter unterteilst oder gruppierst, bleibt Dir überlassen. Buttons sind in den Widgets enthalten, in Abhängigkeit von den bei der Registrierung übergebenen Parametern.
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Als Ergänzung, nicht nur im Zusammenhang mit den übergebenen Parametern unter "register" ist es möglich passende Widgets zu erzeugen. Doch vergesse Tkinter, wie im anderen Thread gefragt, sondern benutzte dafür pygtk. Ein Beispiel, welches ich jetzt nur aus http://www.pygtk.org/dist/pygtk2-tut.pdf entnahm, funktioniert zumindest in der Python-Fu-Konsole.

[codebox=pycon file=Unbenannt.txt]>>> import pygtk
>>> pygtk.require('2.0')
>>> import gtk
>>>
>>> class Base:
... def __init__(self):
... self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
... self.window.show()
... def main(self):
... gtk.main()
...
>>> if __name__ == "__main__":
... base = Base()
... base.main()[/code]

Dazu dann noch ein ausgewachsenes Beispiel eines Widgets, mit dem sich Orientierungshilfen als Linien nicht ins Bild, sondern ins Fenster zeichnen lassen. Vergesse dabei die Sternchenimporte und denke daran, dass im Beispiel unter "register" noch die veraltete Reihenfolge für die Position im Menü verwendet wird.

https://bitbucket.org/paynekj/paynekj-g ... _guides.py
Antworten