私はPythonでtkinterを使用することを学び始めたばかりで、入力ボックスに入力されたものを印刷する単純なスクリプトでのこの試みが機能しないことは直感に反しているようです:
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
text_write = Entry(frame)
text_write.pack()
self.button = Button(frame, text="quit", fg="red", command=frame.quit)
self.button.pack(side=LEFT)
self.hi_there = Button(frame, text='hello', fg='black', command=self.say_hi(text_write.get()))
self.hi_there.pack(side=RIGHT)
def say_hi(self, text):
print(text)
root = Tk()
app = App(root)
root.mainloop()
これは何もせず、エラーも出力しませんが、これを次のように変更すると:
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.text_write = Entry(frame)
self.text_write.pack()
self.button = Button(frame, text="quit", fg="red", command=frame.quit)
self.button.pack(side=LEFT)
self.hi_there = Button(frame, text='hello', fg='black', command=self.say_hi)
self.hi_there.pack(side=RIGHT)
def say_hi(self):
print(self.text_write.get())
次に、関数を呼び出して値を出力します。そこで「自己」を宣言する必要があるのはなぜですか? また、(最初の例のように) text_write の値を引数として say_hi に渡して、それを表示できないのはなぜでしょうか? それとも、あなたと私が間違っているだけですか?