【问题标题】:editing a GUI in another python file在另一个 python 文件中编辑 GUI
【发布时间】:2020-03-29 16:36:24
【问题描述】:

我正在创建一个使用多个 python 文件的程序。在主文件中,我创建了 GUI 的根目录/画布。但是,我需要能够在另一个 python 文件中编辑这个画布(添加到它,清除它等)。无论如何我可以做到这一点吗?

这段代码位于主 (menu.py) 程序中,其中包含 GUI 的画布和根。它在另一个 python 文件中调用另一个函数 (test())。

def Search_Book():
    from searchbooks import test
    test()

test 函数属于searchbooks.py 文件。我需要这个函数来清除原始menu.py 文件中的画布。我有什么办法可以做到这一点?如果没有,是否有其他方法来构建我的程序,以便实现相同的目标?

def test():
    canvas.delete("all")

这段代码提供了 following error:

【问题讨论】:

  • 可以将画布作为test()的参数传递。

标签: python tkinter import module


【解决方案1】:

您可以从另一个文件完全访问画布,但您必须先将 menu.py 文件导入 test.py 文件。下面的代码要求您有 menu.py 文件和 test.py(test.py是您在同一文件夹中的 test() 函数所在的文件。

# This is in the test.py folder
import menu
def test():
  menu.canvas.delete("all")

或者,您可以将 menu.py 文件的所有属性导入 test.py

# This is in the test.py folder
from menu import *
def test():
  canvas.delete("all")

希望这对您有所帮助。

【讨论】:

  • 我试过这个。但是,当我导入菜单文件时,它会自动执行代码,即使我没有故意运行 menu.py 中的任何函数
  • 所以让我理解一下。当您导入菜单时,函数 Search_Book 会被执行?
  • 当我在 test.py 文件中导入菜单时,menu.py 文件会自动执行。这意味着整个 GUI 重新打开。如何阻止它自动执行?
  • 嗯...不知道为什么会发生这种情况,但我会尝试弄清楚。
  • 我认为原因是因为您需要使用if __name__ == '__main__': 来执行您的menu.py 代码中的一些代码。这将意味着代码不会运行,除非它是正在执行的文件(意味着它不会从导入中运行)
猜你喜欢
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 2022-01-15
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多