我正在尝试通过实例化从另一个类访问 tkinter 文本小部件,但是在从外部类调用时它不会被修改,但在类内部调用该方法时工作正常。
我也尝试过@staticmethod,尽管这似乎也不起作用。不过,我更喜欢使用该类的实例化对象。
所以这里是主要的:
if __name__ == "__main__":
mainapp = tk.Tk()
mainapp.title("Automatic Proofreader")
mainapp.configure(background = "gray")
mainapp.resizable(width = False, height = False)
Core(mainapp).grid(column = 0, row = 0, sticky = 'news')
TextDisplay(mainapp).grid(column = 5, row = 0, sticky = 'news')
mainapp.mainloop()
这是我需要访问的类和方法:
class TextDisplay(tk.Frame):
def setText(self, text):
self.displayout.config(state = "normal")
self.displayout.delete(1.0, tk.END)
#This inserts nothing when called from outside class
self.displayout.insert(tk.INSERT, text)
#But it inserts the correct text when called from this same class
self.displayout.config(state = "disabled")
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
verticalscroll = tk.Scrollbar(self)
self.displayout = tk.Text(self, font = ('comic sans', 20, 'bold'), height = 20, width = 40, bg = "gray", wrap = tk.WORD, yscrollcommand = verticalscroll.set, state= "disabled")
self.displayout.grid(columnspan = 4)
verticalscroll.grid(column = 5, sticky = 'ns')
verticalscroll.config(command = self.displayout.yview)
我首先像这样在另一个类中实例化它self.displayclass = TextDisplay(mainapp)
并像这样调用方法self.displayclass.setText(self.text)
我在调试中注意到,当从类外部调用时,方法内部text变量的值被完美地传递(例如,正确传递为)。但是插入不起作用。self.texttext
编辑:“不工作”我的意思是,它根本不插入任何东西。抱歉不清楚。
喵喵时光机
海绵宝宝撒
随时随地看视频慕课网APP
相关分类