gpt4 book ai didi

python - 另一个类中的 tkinter 变量

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:58 27 4
gpt4 key购买 nike

Python 3.1,tkinter/ttk

我写了一些非常简单的东西来尝试理解链接到小部件的 tkinter 变量如何存储在与小部件不同的类中。代码如下。

问题:

1) 为什么按下按钮不改变标签?

2) 我需要那么多 self 吗?每个方法中的变量是否可以在没有 self.一开始?

希望这个答案对其他 tkinter 新手来说是一个有用的学习练习......

from tkinter import *
from tkinter.ttk import *

root = Tk()

class Store:

def __init__(self):
self.v = IntVar()
self.v.set(0)

def set(self, v):
self.v.set(v)

class Main:

def __init__(self):

self.counter = 0

self.label = Label(root, textvariable = a.v)
self.label.pack()

self.button = Button(root, command = self.counter, text = '+1')
self.button.pack()

def counter(self):

self.counter = self.counter + 1
a.set(self.counter)

a = Store()
b = Main()

root.mainloop()

最佳答案

您的问题是您同时拥有一个方法和一个名为counter 的变量。单击按钮时,不会调用您的函数,因此不会设置变量。在您创建按钮时,tkinter 认为 self.counter 是一个变量而不是命令。

这个特定问题的解决方案是重命名函数或变量。然后它应该按您预期的那样工作。

要回答关于“太多 self ”的问题:您需要使用 self ,以便 python 知道您所引用的对象应该在该对象的特定实例中随处可用。所以,是的,如果你想引用它们定义的函数之外的变量,你需要所有这些 self。

至于方法定义中的self,那些也是必须的。当您执行 object.method() 时,python 会自动将对象的引用作为第一个参数发送给方法,以便该方法明确知道正在对哪个方法进行操作。

如果您想了解更多关于“self”的用法,这里有一个与 self 相关的具体问题:What is the purpose of self?

关于python - 另一个类中的 tkinter 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18769406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com