我的代码结构有些问题。我正在使用Tkinter并构建GUI。我的想法如下:有一个字段获取文件的路径,当您单击“开始”时,Python将打开路径并将文件加载为csv。然后它将文件存储在具有更多信息的字典中,并返回将传递给其他函数的字典。但是,这如何工作? Button只能运行一个函数,而不能返回任何东西,对吗?
因此,我可以输入(部分填充)的dict作为此输入函数的参数,但是,它永远不会返回。到目前为止,我的解决方案是将其声明为全局变量,因此在函数中对其进行更改时,在外部也进行了更改。但是,现在,我重组了代码并希望重用代码(因为文件是在过程的多个阶段导入的)。现在,当我想再次使用相同的功能时,全局解决方案似乎有问题。有什么想法,如果没有他们我该怎么办?非常感谢。
更新1:
class Topclass:
def changer(x):
x += 1
class Subclass(Topclass):
def __init__(self):
self.b = 2
obb = Subclass()
print(obb.b)
Topclass.changer(obb.b)
print(obb.b)
最佳答案
@Martineau的建议是正确的,从@BryanOakley的Best way to structure a tkinter application答案中可以学到很多东西。
使用DataTransfer
专用对象是一种技术,您可以使用它传递不带tkinter
值的框架的变量或数据,或者当您需要数据跨越封装障碍时,无需紧密耦合涉及的对象:
这是一个简单的示例来说明其工作原理:
class DataTransfer:
"""mutable object that is used to transfer data
"""
def __init__(self, value: int) -> None:
self.value = value
def add_one(self) -> None:
self.value += 1
def __str__(self) -> str:
return f'{self.value}'
class Topclass:
def changer(x: DataTransfer) -> None:
x.add_one()
class Subclass(Topclass):
def __init__(self) -> None:
self.b = DataTransfer(2)
obb = Subclass()
print(obb.b)
Topclass.changer(obb.b)
print(obb.b)
关于python - 用tkinter按钮更改变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56404679/