【问题标题】:Change tkinter canvas's text outside the class在课堂外更改 tkinter 画布的文本
【发布时间】:2016-08-11 11:32:22
【问题描述】:
    from tkinter import *

class MainBattle(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)   
        self.parent = parent        
        self.initUI()
    def initUI(self):
        global canvas
        self.parent.title('Python')
        self.pack(fill = BOTH, expand = 1)
        canvas = Canvas(self)
        self.Label_My = Label(self, text = 'MyObject')


        self.Label_My.place(x = 470, y = 35)
        canvas.pack(fill = BOTH, expand = 1)
        canvas.update()
    def aa(self):
        self.Label_My['text'] = 'HisObject'

def Change():
    Label_My['text'] = 'HisObject'

root = Tk()
ex = MainBattle(root)
root.geometry('700x500')

它应该使用全局方法吗? 如果可能的话,我会在类内定义标签并在类外更改它的文本。

【问题讨论】:

    标签: python class tkinter label self


    【解决方案1】:

    您不需要全局变量。你有一个实例的引用,它允许你访问所有的实例变量:

    ex.Label_My["text"] = "HisObject"
    

    【讨论】:

    • 比使用全局方法更方便。但是感谢他们帮助我:)
    【解决方案2】:

    如果您的问题是“我可以使用 global 从类外部设置变量值”,那么可以。 每当您想更改全局变量的值时,都需要编写 global.

    def changetext():
       global label_text
       label_text = "new text"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 2023-01-16
      • 2021-04-01
      • 1970-01-01
      • 2015-04-23
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多