gpt4 book ai didi

python - 使用 tkinter 按钮更改变量

转载 作者:行者123 更新时间:2023-12-01 07:47:25 25 4
gpt4 key购买 nike

我的代码结构出现了一些问题。我正在使用 Tkinter 并构建一个 GUI。我的想法如下:有一个字段获取文件的路径,当您单击“开始”时,Python 将打开该路径并将文件加载为 csv。然后它将文件存储在带有更多信息的字典中,并返回将传递给其他函数的字典。然而,这如何行得通呢? Button 只能运行一个函数但不能返回任何东西,对吧?

因此,我可以输入(部分填充的)字典作为此输入函数的参数,但是,它永远不会返回。到目前为止我的解决方案是将其声明为全局的,因此当它在函数内更改时,它也会在外部更改。但是,现在我重组了代码并希望重用代码(因为文件是在过程中的几个阶段导入的)。现在,当我想再次使用相同的功能时,全局解决方案似乎有问题。有什么想法我可以在没有它们的情况下做到这一点吗?非常感谢。

更新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/

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