为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 tkinter 中的另一个类的文本小部件中插入文本?

如何在 tkinter 中的另一个类的文本小部件中插入文本?

喵喵时光机 2022-05-24 17:01:05
我正在尝试通过实例化从另一个类访问 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编辑:“不工作”我的意思是,它根本不插入任何东西。抱歉不清楚。
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

简而言之,要在对象上调用函数,您必须具有对该对象实例的引用。这是面向对象编程的一个基本方面。


您不一定必须使用全局变量。您可以,也可以将其作为属性存储在其他对象上。


这是一个有效的最小示例:


if __name__ == "__main__":

    mainapp = tk.Tk()

    displayclass = TextDisplay(mainapp)

    displayclass.grid(column = 5, row = 0, sticky = 'news')


    displayclass.setText("hello, world")

    mainapp.mainloop()


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号