【python】【tkinter】用类构造的tkinter,如何运行entry.get()

用类构造的tkinter,请问如何在【同一类下面的另一个函数中】运行entry.get(),以做后续的运算?请见代码,谢谢

import tkinter as tk


class APP:
    def __init__(self, window):
        self.window = window
        self.window.title("main")
        self.window.geometry("600x300")
        self.labelframe()

    def labelframe(self):
        lf = tk.LabelFrame(
            self.window, text="输入/输出", font=("微软雅黑", 10, "bold"), padx=10, pady=10
        )
        lf.place(x=20, y=20)

        label = tk.Label(lf, text="输入文件: ", font=("微软雅黑", 10))
        label.grid(row=1, column=1)

        entry = tk.Entry(lf, width=55, font=("微软雅黑", 10))
        entry.grid(row=1, column=2)

        entry.insert("insert", "我是框里的信息")  # 怎么在这个类下面另一个函数提取出这个信息?

    # def get_message(self):  # 如何在这个函数内取出上面的信息,用于下一步运算
    #     getms = XXXXXX.get()
    #     print(getms)


root = tk.Tk()
app = APP(root)
root.mainloop()

import tkinter as tk
 
 
class APP:
    def __init__(self, window):
        self.window = window
        self.window.title("main")
        self.window.geometry("600x300")
        self.labelframe()
        self.get_message()
 
    def labelframe(self):
        lf = tk.LabelFrame(
            self.window, text="输入/输出", font=("微软雅黑", 10, "bold"), padx=10, pady=10
        )
        lf.place(x=20, y=20)
 
        label = tk.Label(lf, text="输入文件: ", font=("微软雅黑", 10))
        label.grid(row=1, column=1)
 
        entry = tk.Entry(lf, width=55, font=("微软雅黑", 10))
        entry.grid(row=1, column=2)
 
        entry.insert("insert", "我是框里的信息")  # 怎么在这个类下面另一个函数提取出这个信息?
        self.entry = entry
 
    def get_message(self):  # 如何在这个函数内取出上面的信息,用于下一步运算
        getms = self.entry.get()
        print(getms)
 
 
root = tk.Tk()
app = APP(root)
root.mainloop()

img

控件前加self. ,,后面调用也加self.试试。或者用修饰函数转换,不过不建议。我不太会用,这里么不建议用

用textvariable实现变量和组件的双向绑定

import tkinter as tk


class APP:
    def __init__(self, window):
        self.window = window
        self.window.title("main")
        self.window.geometry("600x300")
        self.lf = tk.LabelFrame(
            self.window, text="输入/输出", font=("微软雅黑", 10, "bold"), padx=10, pady=10
        )
        self.entry = tk.Entry(self.lf, width=55, font=("微软雅黑", 10))
        self.labelframe()
        self.get_message()

    def labelframe(self):
        self.lf.place(x=20, y=20)
        label = tk.Label(self.lf, text="输入文件: ", font=("微软雅黑", 10))
        label.grid(row=1, column=1)
        self.entry.grid(row=1, column=2)
        self.entry.insert("insert", "我是框里的信息")  # 怎么在这个类下面另一个函数提取出这个信息?

    def get_message(self):  # 如何在这个函数内取出上面的信息,用于下一步运算
        getms = self.entry.get()
        print(getms)


root = tk.Tk()
app = APP(root)
root.mainloop()


import tkinter as tk
 
class APP:
    def __init__(self, window):
        self.window = window
        self.window.title("main")
        self.window.geometry("600x300")
        self.labelframe()
#####
        self.entryText = StringVar()
#####
    def labelframe(self):
        lf = tk.LabelFrame(
            self.window, text="输入/输出", font=("微软雅黑", 10, "bold"), padx=10, pady=10
        )
        lf.place(x=20, y=20)
        label = tk.Label(lf, text="输入文件: ", font=("微软雅黑", 10))
        label.grid(row=1, column=1)
        entry = tk.Entry(lf, textvariable=self.entryText, width=55, font=("微软雅黑", 10))
        entry.grid(row=1, column=2)
        entry.insert("insert", "我是框里的信息")  # 怎么在这个类下面另一个函数提取出这个信息?
    def get_message(self):  # 如何在这个函数内取出上面的信息,用于下一步运算
         getms = self.entryText.get()
         print(getms)
 
root = tk.Tk()
app = APP(root)
root.mainloop()