tkinter按钮命令函数未定义

-1 投票
1 回答
2026 浏览
提问于 2025-04-18 16:06

我正在尝试从文本框获取输入,并把这些输入写入一个文件中。但是我遇到了一个错误:retrieve_input没有定义。请帮我修正我的代码:

代码如下:

import tkinter as tki 
class App(object):

    def __init__(self,root):
        self.root = root

    # create a Frame for the Text and Scrollbar
        txt_frm = tki.Frame(self.root, width=600, height=400)
        txt_frm.pack(fill="both", expand=True)
        # ensure a consistent GUI size
        txt_frm.grid_propagate(False)   

        self.txt1 = tki.Text(txt_frm, borderwidth=3, relief="sunken", height=4,width=55)
        self.txt1.config(font=("consolas", 12), undo=True, wrap='word')
        self.txt1.grid(row=0, column=1, sticky="nsew", padx=2, pady=2)

        scrollb1 = tki.Scrollbar(txt_frm, command=self.txt1.yview)
        scrollb1.grid(row=0, column=2, sticky='nsew')
        self.txt1['yscrollcommand'] = scrollb1.set

        button = tki.Button(self,text=u"Click                                                                     command=retrieve_input) 
        button.grid(column=1,row=0) 
    def retrieve_input():
        input = self.txt1.get("0.0",'END-1c')
        with open('hello.txt','w') as f:
            f.wite(input)  
root = tki.Tk()
app = App(root)
root.mainloop()

1 个回答

1

除了明显的拼写错误,问题出在这一行:

button = tki.Button(self,text="Click", command = self.retrieve_input)

注意,你传给tk.Button的第一个参数是self。第一个参数必须是一个控件,但你给的是self,这不是一个控件。也许你应该用txt_form来代替?

撰写回答