0

私はこの言語に不慣れで、正直迷っています。

from tkinter import *

class App:

    def __init__(self,master):

        self.var = ""

        frame = Frame(master)
        frame.pack()

        self.action = Button(frame,text="action",command=self.doAction())
        self.action.pack(side=LEFT)

    def doAction(self):
        print(self.var)

root = Tk()

app = App(root)

root.mainloop()
4

1 に答える 1

1

command=self.doAction()doAction行の実行時 (つまり、作成時)に呼び出されます。ボタンが呼び出すまで関数が呼び出されないように、括弧を削除する必要があります。

self.action = Button(frame,text="action",command=self.doAction)

引数 (作成時に知っている) を関数に渡すには、ラムダ (無名関数) を使用できます。

self.action = Button(frame,text="action",command=lambda: self.doAction(x))

これにより、 を呼び出す新しい関数が作成されますself.doAction(x)。同様に、名前付き関数を使用できます。

def button_action(): 
    self.doAction(x)
self.action = Button(frame,text="action",command=button_action)
于 2013-08-28T21:11:08.967 に答える