Seite 1 von 1
Command wird sofort ausgeführt
Verfasst: Donnerstag 25. Februar 2010, 20:26
von tmfdsm
Ich habe einen Button:
Code: Alles auswählen
but=Button(root, text=result[zahl], command=webbrowser.open(url, 0, 0))
Sobald ich jetzt den Code starte, wird die Webseite geöffnet, aber das soll erst passieren, wenn ich auf den Button klicke. Was muss ich dafür machen?
Verfasst: Donnerstag 25. Februar 2010, 20:58
von wuf
Hallo tmfdsm
Kannst du einmal das folgende ausprobieren:
Code: Alles auswählen
def oben_webbrowser():
webbrowser.open(url, 0, 0)
but=Button(root, text=result[zahl], command=oben_webbrowser)
Edit: Sorry die Funktion sollte eigentlich 'open_webbrowser' lauten.
Gruss wuf

Verfasst: Donnerstag 25. Februar 2010, 21:07
von tmfdsm
ja, danke, habe ein anderes Problem gelöst, sodass ich das jetzt machen konnte

Danke!
Verfasst: Freitag 26. Februar 2010, 00:09
von EyDu
Aber irgendjemand muss jetzt schon noch functools.partial und lambda in den raum werfen!
Verfasst: Freitag 26. Februar 2010, 08:30
von dahaze
Ich fang mal an:
Code: Alles auswählen
but=Button(root, text=result[zahl], command=lambda :webbrowser.open(url, 0, 0))
Verfasst: Freitag 26. Februar 2010, 12:29
von tmfdsm
ja, das kenne ich schon

Verfasst: Samstag 27. Februar 2010, 08:45
von wuf
...... Hier noch die fehlende Variante mit 'functools.partial':
Code: Alles auswählen
import Tkinter as tk
import webbrowser
from functools import partial
def call_webbrowser():
webbrowser.open('192.168.0.253', 0, 0)
app_win = tk.Tk()
button = tk.Button(app_win, text="webbrowser",
command=partial(call_webbrowser))
button.pack()
app_win.mainloop()
oder
Code: Alles auswählen
import Tkinter as tk
import webbrowser
from functools import partial
URL = '192.168.0.253'
NEW = 0
ATORAISE = False
def call_my_webbrowser(url, new, autoraise):
webbrowser.open(url, new, autoraise)
app_win = tk.Tk()
button = tk.Button(app_win, text="webbrowser ("+URL+")",
command=partial(call_my_webbrowser, URL, NEW, ATORAISE))
button.pack()
app_win.mainloop()
oder
Code: Alles auswählen
import Tkinter as tk
import webbrowser
from functools import partial
URL = '192.168.0.253'
NEW = 0
ATORAISE = False
def call_my_webbrowser(*args):
webbrowser.open(*args)
app_win = tk.Tk()
button = tk.Button(app_win, text="webbrowser ("+URL+")",
command=partial(call_my_webbrowser, URL, NEW, ATORAISE))
button.pack()
app_win.mainloop()
Kennst du sicher auch schon?
Gruss wuf

Verfasst: Samstag 27. Februar 2010, 09:57
von HWK
@wuf: Das zeigt aber nicht unbedingt den Sinn bzw. Vorteil von partial, da Du ja trotzdem eine neue Funktion definierst. Meines Erachtens sollte es eher so aussehen:
Code: Alles auswählen
import Tkinter as tk
import webbrowser
from functools import partial
URL = '192.168.0.253'
NEW = 0
ATORAISE = False
app_win = tk.Tk()
button = tk.Button(app_win, text="webbrowser ("+URL+")",
command=partial(webbrowser.open, URL, NEW, ATORAISE))
button.pack()
app_win.mainloop()
MfG
HWK
Verfasst: Samstag 27. Februar 2010, 10:12
von wuf
Hallo HWK
Super! Das ist ja noch besser. Besten Dank für deinen Tipp! Habe functools.partial leider noch nicht viel gebraucht.
Gruss wuf
