【问题标题】:How to use variables across different files with tkinter如何使用 tkinter 跨不同文件使用变量
【发布时间】:2020-12-15 19:55:02
【问题描述】:

所以我编写了一个 tkinter 程序,一切正常,万岁!但是整个程序都写在一个大而杂乱的文件中,而且因为它的组织性很强,所以很难维护。我想通过创建函数并将这些函数存储在单独的 .py 文件中来清理程序,当我需要使用它们时会调用它们。

我的主文件是一个 tkinter 程序,显然是一个连续循环。该程序接受来自 GUI 的用户输入,并使用根据用户输入(按下按钮后)而变化的变量执行代码。虽然当我尝试使用在 tkinter 循环中获得的变量时,我无法在其他 .py 文件中使用这些变量。

为了明确代码是如何工作的:用户在 GUI 中输入变量,用户按下提交按钮,变量被记录,代码使用这些变量执行,所有这些都在 tkinter 主循环内。

如何在多个 .py 文件之间共享来自 tkinter 循环的变量,以便将代码组织到单独的文件中?

【问题讨论】:

  • 就像你喜欢的import filename 一样正常?还是有什么问题?
  • 当我尝试使用 tkinter 循环中的任何变量名时,其他文件似乎看不到这些变量。我进行了设置,以便主文件导入所有其他文件,因为它们包含主文件将用来清理内容的函数。有没有另一种清理多个文件的方法?
  • 没有代码很难说

标签: python tkinter


【解决方案1】:

当您将 python 文件导入另一个文件时,您可以使用第一个文件中编写的代码。

例如:

first.py

def print_something(something):
    print(something)

second.py

import first

print_something("hello")

这将打印“你好”。

因此,如果您的循环在一个文件中运行,您可以在不同文件中编写的函数中使用文件中的变量。

这可能是因为当您导入一个文件时,该文件中的所有代码都会被执行,因此该文件中的每个函数都可以在导入它们的文件中使用。

这就是为什么要在要导入的文件末尾使用

if __name__ == "__main__":
    # do something when this file is run
    # and not imported

TL;DR 变量不会在文件中传递,函数会在主文件中进行解释。

【讨论】:

  • 所以如果我不使用那个代码块if __name__ == "__main__": # do something when this file is run # and not imported 并且在调用函数之前我还没有创建变量,那么这些变量在技术上还不存在,因为来自导入的文件首先运行?并且使用该代码块只会在使用时执行该导入的文件?
  • 函数没有运行,它们只是从 Python 解释器中读取,在主文件中使用。主文件是您运行的文件。你不能在分配变量之前使用它们。
  • 是的,使用该块,if 语句中的代码只有在文件直接运行而不是导入时才会为真。
  • 我正在尝试用一些简单的方法来调整您的示例,但它无法正常工作。 main.py:import file2 x = 5 print(x) check(x) print(x) file2.py:if __name__ == '__main__': def check(): x += 1 return x 我收到NameError: name 'check' is not defined
  • 函数位于file2.check。你这样称呼它:file2.check(x)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 2020-04-12
  • 2016-03-15
  • 1970-01-01
相关资源
最近更新 更多