我如何 return 按下按钮时调用的函数中的变量?

How do i return a variable from a function that is called when a button is pressed?

我有一个简单的 tkinter 应用程序。我想创建一个允许用户插入其组的弹出窗口 window。写入并按下回车按钮后,该值得到验证,如果可以接受,那么我想保存它。 group 的值在按下按钮时“调用”的 save_and_kil 函数中获取。我在按钮参数中指定要调用的命令,所以如何保存组的值以便我可以在 other_function?

中访问它
import tkinter as tk


class SomeClass:
    def __init__(self, root):
        self.root = root
        self.root.title("App")
        self.root.geometry("600x450")
        self.groups = ["1", "2", "3", "4", "5"]
        self.top_window()
        self.group = "nothing"


    def top_window(self):
        a = tk.Toplevel()
        a.geometry('400x150')
        a.title('Credentials Window')

        def save_and_kil():
            group = txt_entry.get()
            if group in self.groups:
                a.destroy()

        txt_label = tk.Label(a, text="please write your group")
        txt_entry = tk.Entry(a)
        enter_but = tk.Button(a,
                              text='Enter',
                              command=save_and_kil)
        txt_label.grid(column=0, row=0)
        txt_entry.grid(column=1, row=0)
        enter_but.grid(column=1, row=1)
        # somehow make redefine the value of self.group

       def other_function(self):
           print(self.group)
           pass


roott = tk.Tk()
app = SomeClass(roott)
roott.mainloop()

编辑 添加示例代码:

import tkinter as tk


class SomeClass:
    def __init__(self, root):
        self.root = root
        self.root.title("App")
        self.root.geometry("600x450")
        self.groups = ["1", "2", "3", "4", "5"]
        self.top_window()
        self.group = "nothing"

    def save_and_kil(self):
        self.group = self.txt_entry.get()
        
        if self.group in self.groups:
            self.a.destroy()
            
        self.other_function()

    def other_function(self):
       print(f'self.group: {self.group}')
       pass

    def top_window(self):
        self.a = tk.Toplevel()
        self.a.geometry('400x150')
        self.a.title('Credentials Window')

        self.txt_label = tk.Label(self.a, text="please write your group")
        self.txt_entry = tk.Entry(self.a)
        self.enter_but = tk.Button(self.a,
                              text='Enter',
                              command=self.save_and_kil)
        self.txt_label.grid(column=0, row=0)
        self.txt_entry.grid(column=1, row=0)
        self.enter_but.grid(column=1, row=1)
        # somehow make redefine the value of self.group


roott = tk.Tk()
app = SomeClass(roott)
roott.mainloop()

您可以直接将条目设置为 self.group 或将 self.temp_group 保存在 save_and_kil 中并稍后在 other_function[=15= 中使用它]

save_and_kill 关闭 self,因此您可以在函数内部设置 self.group

    def save_and_kil():
        self.group = txt_entry.get()
        if self.group in self.groups:
            a.destroy()