Seite 1 von 1

Button führt command direkt aus

Verfasst: Freitag 2. November 2012, 16:08
von StefanLawl
Hallo, ich habe das Problem, dass ich einen Button habe, der (logischerweise) einen command ausführen soll, in meinem Fall command=self.ngag_page(page). Allerdings wird dieser Befehl direkt ausgeführt, sobald ich das Programm starte, ohne dass ich den Button drücke und der Button funktioniert nicht mehr (wenn ich ihn klicke, passiert nicht).

Ich weiß nicht, ob command=self.ngag_page(page) richtig ausgedrückt ist, anders wüsste ich allerdings nicht, wie ich 'hot' als page benutze, sobald man den Button drückt, da ich selbiges auch mit 'trending' und 'vote' machen möchte.

Code: Alles auswählen

import os, time
from Tkinter import Tk, Label, Toplevel, Frame, Button

root=Tk()
class App():
    def __init__(self, master):
        self.bgcolor="#5ca1f7"

        self.ngag_toplevel = Toplevel(bg=self.bgcolor)
        self.ngag_toplevel.geometry('640x360')
        self.ngag_toplevel.title('9gag Downloader')
        self.ngag_toplevel.focus_force()
        self.ngag_toplevel.resizable(False, False)
        self.ngag_toplevel.wm_attributes("-topmost", True)
        self.ngag_toplevel.attributes("-alpha", 0.95)

        self.ngag_frame = Frame(self.ngag_toplevel, bg=self.bgcolor)
        self.ngag_frame.pack(fill='both', expand=True)

        self.ngag_button_hot = Button(self.ngag_frame, text='Hot', width=8, command=self.ngag_page('hot'))
        self.ngag_button_hot.pack(side='top', anchor='w', padx=15, pady=10)

        self.ngag_button_trend = Button(self.ngag_frame, text='Trending', width=8)
        self.ngag_button_trend.pack(side='top', anchor='w', padx=15, pady=0)

        self.ngag_button_vote = Button(self.ngag_frame, text='Vote', width=8)
        self.ngag_button_vote.pack(side='top', anchor='w', padx=15, pady=10)

    def ngag_page(self, page):
        zeit=time.localtime()
        jahr, monat, tag, stunde, minute = zeit[0:5]
        self.folder= "%s-%s-%s-%s-%s" % (tag, monat, jahr, stunde, minute)
        url='http://9gag.com/%s' % page
        name = '%s'+str(time.time())
        os.makedirs('9gag\\%s_%s' % (page[0], self.folder))

App(root)
root.mainloop()
(Ignoriert, dass ich ein extra Toplevel erstelle, ich möchte das Programm in einem anderen verwenden, das bereits ein Fenster besitzt. Das leere Tk() ersetzt dieses.)

Stefan

Vielen Dank für Antworten (und Entschuldigung für die vielen Fragen, die ich ständig stelle :/ Ich versuche wirklich, nur Fragen zu stellen, wenn ich selbst nach Tagen nicht herausfinde, was das Problem ist.)

Re: Button führt command direkt aus

Verfasst: Freitag 2. November 2012, 16:18
von yipyip
Statt tagelang zu suchen, versuchs doch mal hiermit:
http://www.python-forum.de/viewtopic.ph ... 59#p226259

SCNR
:wink:
yipyip

Re: Button führt command direkt aus

Verfasst: Freitag 2. November 2012, 17:01
von StefanLawl
Vielen Dank yipyip, ich werde es mit lambda versuchen! :mrgreen:

Stefan

Es funktioniert bestens, danke vielmals!