Hello again
Also ich habs nun soweit hinbekommen, dass ich ein wx.Dialog - Fenster erstellt habe und darin Links enthalten sind. Nun möchte ich aber, dass wenn man auf einen Link klickt, nicht der Browser mit einer URL geöffnet wird, sondern ein normales wx.MessageDialog inklusive ein paar Anzeigedaten.....
geht das irgendwie?
Gruß
*EDIT*
Also quasi einfach eine Funktion aufrufen, wenn man auf einen Link klickt. Innerhalb dieser Funktion kann ja dann der Code für den MessageDialog sein. Direkt als URL einen Funktionsnamen angeben hat net wirklich funktioniert
Link in MessageDialog?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo blubber!blubber hat geschrieben:Nun möchte ich aber, dass wenn man auf einen Link klickt, nicht der Browser mit einer URL geöffnet wird, sondern ein normales wx.MessageDialog
Schau dir doch die Demo des "HyperLinkCtrl" noch einmal an. Dort wird gezeigt, wie du beim Klick auf den Hyperlink einen Eventhandler aufrufen kannst.
Ungefiltert aus der Demo kopiert:
Code: Alles auswählen
# Intense link examples..
self._hyper3 = hl.HyperLinkCtrl(self, wx.ID_ANY, "wxPython Mail Archive",
URL="http://lists.wxwidgets.org/")
sizer.Add(self._hyper3, 0, wx.ALL, 10)
self._hyper3.Bind(hl.EVT_HYPERLINK_RIGHT, self.OnRightLink)
self._hyper3.SetLinkCursor(wx.CURSOR_QUESTION_ARROW)
self._hyper3.SetColours("DARK GREEN", "RED", "NAVY")
self._hyper3.SetUnderlines(False, False, False)
self._hyper3.EnableRollover(True)
self._hyper3.SetBold(True)
self._hyper3.DoPopup(False)
self._hyper3.UpdateLink()
self._hyper4 = hl.HyperLinkCtrl(self, wx.ID_ANY,
"Open Google In Current Browser Window?",
URL="http://www.google.com")
sizer.Add(self._hyper4, 0, wx.ALL, 10)
self._hyper4.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLink)
self._hyper4.SetToolTip(wx.ToolTip("Click link for yes, no, cancel dialog"))
self._hyper4.AutoBrowse(False)
def OnLink(self, event):
# Goto URL, demonstrates attempt to open link in current window:
strs = "Open Google In Current Browser Window "
strs = strs + "(NO Opens Google In Another Browser Window)?"
nResult = wx.MessageBox(strs, "HyperLinkCtrl", wx.YES_NO |
wx.CANCEL | wx.ICON_QUESTION, self)
if nResult == wx.YES:
self._hyper4.GotoURL("http://www.google.com", True, True)
elif nResult == wx.NO:
self._hyper4.GotoURL("http://www.google.com", True, False)
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
kann man eigentlich einem Event einen Parameter übergeben ?
Also wenn man das Beispiel der Demo her nimmt:
Dass hier an die Funktion self.OnLink der Parameter "uebergabe" übergeben wird !?
wenn ich
oder sowas mache, dann heisst es immer, dass 3 Variable empfangen aber nur 2 übergeben werden !?
Gruß
Also wenn man das Beispiel der Demo her nimmt:
Code: Alles auswählen
self._hyper4.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLink(uebergabe))
wenn ich
Code: Alles auswählen
def OnLink(self, event, uebergabe)
Gruß
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo blubber!blubber hat geschrieben:kann man eigentlich einem Event einen Parameter übergeben?
z.B. mit lambda:
Code: Alles auswählen
self._hyper4.Bind(hl.EVT_HYPERLINK_LEFT, lambda event: self.OnLink(event, uebergabe))
Code: Alles auswählen
def OnLink(self, event, uebergabe = None)
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ok, vielen Dank.
Ein letztes Problem ist nun, dass ich in einer For - Schleife meine Links erzeugen lasse und aus einer Liste heraus die Werte für "uebergabe" hole. Also die Variable "uebergabe" hat jedes mal einen anderen Wert. Nun ist es so, dass bei mir jeder Link den gleichen Wert für "uebergabe" erhält, nämlich das letzte Element der Liste...
Gibts hierfür noch eine Möglichkeit? Dann würd ich auch aufhören zu nerven
Ein letztes Problem ist nun, dass ich in einer For - Schleife meine Links erzeugen lasse und aus einer Liste heraus die Werte für "uebergabe" hole. Also die Variable "uebergabe" hat jedes mal einen anderen Wert. Nun ist es so, dass bei mir jeder Link den gleichen Wert für "uebergabe" erhält, nämlich das letzte Element der Liste...
Gibts hierfür noch eine Möglichkeit? Dann würd ich auch aufhören zu nerven
also so:
Code: Alles auswählen
for uebergabe in liste:
...
self.testlink.Bind(hl.EVT_HYPERLINK_LEFT, lambda event: self.OnLink(event, uebergabe))