Kontextmenü

Plattformunabhängige GUIs mit wxWidgets.
Antworten
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Dienstag 17. Oktober 2006, 06:54

Hallo,

Gibt es irgendeine Möglichkeit, das Windows-Kontextmenü, welches ja auch im Win-Explorer und anderen Programmen verwendet wird, in meine eigene Liste einzubinden?

Wäre super wenn das geht!
Hat jemand eine Idee?
Danke!
Gruß, Harry
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 17. Oktober 2006, 07:39

HarryH hat geschrieben:Gibt es irgendeine Möglichkeit, das Windows-Kontextmenü, welches ja auch im Win-Explorer und anderen Programmen verwendet wird, in meine eigene Liste einzubinden?
Hallo HarryH!

Falls du ein normales Popupmenü meinst:

- http://wiki.wxpython.org/index.cgi/PopupMenuRevised
- http://wiki.wxpython.org/index.cgi/Anot ... 522271c399

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Dienstag 17. Oktober 2006, 08:39

Danke für deine Antwort, Gerold.
Ich meinte aber das Orginal-Kontextmenü, das z.B. im Windows-Explorer verwendet wird, oder im FileOpenDialog.
Gruß, Harry
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Dienstag 17. Oktober 2006, 08:49

Man kann meines Wissens nicht das Original
Menü des IE übernehmen. Du musst es dir schon
selber schreiben und anpassen. Dafür hast du ja Links bekommen.
Oder verstehe ich dich falsch? :)
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Dienstag 17. Oktober 2006, 10:18

Ja ich meine das Windows-Orginal-Menü.
Es geht doch in diversen anderen Programmen auch. Warum sollte man das über wxPython nicht in seine eigene Liste implementieren können?
Gruß, Harry
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Dienstag 17. Oktober 2006, 12:05

Hey HarryH,

Es gibt ein Beispiel, dass in diese Richtung geht.
Bei mir liegt es unter folgendem Pfad:
C:\Python24\Lib\site-packages\win32comext\shell\demos\servers\context_menu.py

greets george
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Dienstag 17. Oktober 2006, 12:09

Vielen Dank!

Das Beispiel zeigt aber nur, wie ich dem Explorer Menü Items hinzufügen kann.
Ich möchte jedoch das vorhandene Menü, in meiner ListCtrl aufrufen.
Gruß, Harry
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 17. Oktober 2006, 12:56

Also, als Nicht-Windows-Nutzer habe ich hier vielleicht ein Verständnisproblem, aber: Wozu soll das gut sein?
Letzlich gilt doch, daß man in einem eigenen Programm jedes Menu-Item mit Funktionalität versehen muß. Das nimmt einem doch niemand ab. So, und jetzt eine Liste mit Namen zu schreiben und daraus ein Menü zu generieren ist ja nicht sonderlich schwierig. Also, mögt ihr mich aufklären, wozu man das braucht? Meine Frage ist wirklich nur Neugierde und keine Kritik!

Gruß,
Christian
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Dienstag 17. Oktober 2006, 13:17

Hi,

Ich stelle mir das so vor:
Ich rufe das Windows-Explorer-Kontext-Menu in meiner eigenen ListCtrl auf, und übergebe dabei den selektierten Datei/Ordner-Pfad an das Menü weiter.
Nach der Auswahl eines Items werden dann die entsprechenden dahinterliegenden Funktionen verwendet.

Die Frage ist, ob es so geht und wie ich das umsetzen kann.
Ich habe jedenfalls schon Programme gesehen, die exakt das Explorer-Menu nachbilden und genau die dahinterliegenden Funtkionen zur Weiterverarbeitung verwenden.
Vielleicht ist die Umsetzung über die Win-API oder pywin32com möglich. Nur habe ich keinerlei Ahnung, wie?
Gruß, Harry
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Dienstag 17. Oktober 2006, 14:09

du gibst das nicht an dem Menü weiter sondern fügst es in die Zwischenablage des PCs ein, wenn du das buch wxPython in action hast, letztes kapitel
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Mittwoch 18. Oktober 2006, 07:48

Hi DatenMetzgerX,

Leider habe ich das Buch 'wxPython in action' nicht!
Könntest du mir bitte erklären was du mit deiner Aussage meinst? Wäre dir sehr dankbar!
Gruß, Harry
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Mittwoch 18. Oktober 2006, 10:46

Du musst das File in das Clipboard kopieren

http://wxnet.sourceforge.net/apiref/wx/Clipboard.html

Google mal danach, habe das auch noch nie gemacht
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Mittwoch 18. Oktober 2006, 10:49

Und dann?
Wie erzeuge ich das Explorer-Kontext-Menu?
Gruß, Harry
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Mittwoch 18. Oktober 2006, 17:19

Normales wx.MENU welches du dann am benötigten Ort auf popen lässt. Fügst die Einzelnen Tools hinzu und fertig
Benutzeravatar
Blattlaus
User
Beiträge: 55
Registriert: Donnerstag 24. August 2006, 08:55

Donnerstag 19. Oktober 2006, 09:45

Also MEtzger, entweder liest du dir nicht durch was er möchte oder du verstehst es nicht (möglicherweise auch mutwillig).

Er möchte das Oginal Kontextmenu aus dem Windows Explorer in seinem Programm benutzen, so wie das viele Programm, wie zum Beispiel Total Commander, tun. Er will es nicht nachbauen.
Das ganze geht schon aus dem Startpost hervor...

------------

So, und jetzt zur Antwort: Ich weiß nicht wie es geht, aber ich bin mir sicher, dass man dazu die Windows-API benutzen muss. Vermutlich endet das ganze in einem ekeligen Haufen Code der dann nichtmehr plattformunanhängig ist.

Ich kann dir auch nicht sagen, wie du die von Python an die Winapi kommst, aber wenn du es herausgefunden hast ist das Microsoft Developers Network die richtige anlaufstelle.
Antworten