每当执行主脚本时,另一个文件中的 Window (Tkinter) 就会出现
Window (Tkinter) in another file shows up whenever the main script is executed
大家好。我一直对处理我的 python 代码感到困惑。我将 Tkinter 用于我的个人学校项目的 GUI。
我将此代码作为 window(对于我 main.py 菜单栏中的 Create 菜单)在另一个文件(假设 functions.py):
def createNew(coord):
#create a new window element
createWindow = tk.Tk()
createWindow.title("Create a new tracker")
createWindow.geometry("350x400")
createWindow.focus_force()
createWindow.grab_set()
x = coord[0]
y = coord[1]
createWindow.geometry("+%d+%d" % (x + 250, y + 200))
上面的代码有 coord
参数,它使用此代码接收来自 main.py 的输入(functions.py 作为函数导入):
parentPosition = [window.winfo_x(), window.winfo_y()]
...
menubar = tk.Menu(window)
#file menu
file = tk.Menu(menubar, tearoff=0)
file.add_command(label='Create new tracker', command=funct.createNew(parentPosition))
我的问题是每当我执行 main.py 时,functions.py 中的 window 会自动显示,即使我没有 select 从 main.py 创建 菜单。无论如何,预期的位置都是正确的。
Actual snapshot of the UI
我的代码中有什么问题?任何见解将不胜感激。
PS。我有意将函数 createNew 放在 functions.py rathen 而不是 main.py
当你运行行
时你立即执行函数
file.add_command(label='Create new tracker', command=funct.createNew(parentPosition))
这是因为,通过在函数名后加上一对括号,您可以立即调用它,并将其 return 值传递给 add_command
函数。
为了解决这个问题,您可以使用 lambda
关键字来延迟函数的执行,直到它被再次调用:
file.add_command(label='Create new tracker', command=lambda: funct.createNew(parentPosition))
您可以找到有关 lambda 函数的更多信息 here。
大家好。我一直对处理我的 python 代码感到困惑。我将 Tkinter 用于我的个人学校项目的 GUI。
我将此代码作为 window(对于我 main.py 菜单栏中的 Create 菜单)在另一个文件(假设 functions.py):
def createNew(coord):
#create a new window element
createWindow = tk.Tk()
createWindow.title("Create a new tracker")
createWindow.geometry("350x400")
createWindow.focus_force()
createWindow.grab_set()
x = coord[0]
y = coord[1]
createWindow.geometry("+%d+%d" % (x + 250, y + 200))
上面的代码有 coord
参数,它使用此代码接收来自 main.py 的输入(functions.py 作为函数导入):
parentPosition = [window.winfo_x(), window.winfo_y()]
...
menubar = tk.Menu(window)
#file menu
file = tk.Menu(menubar, tearoff=0)
file.add_command(label='Create new tracker', command=funct.createNew(parentPosition))
我的问题是每当我执行 main.py 时,functions.py 中的 window 会自动显示,即使我没有 select 从 main.py 创建 菜单。无论如何,预期的位置都是正确的。
Actual snapshot of the UI
我的代码中有什么问题?任何见解将不胜感激。
PS。我有意将函数 createNew 放在 functions.py rathen 而不是 main.py
当你运行行
时你立即执行函数file.add_command(label='Create new tracker', command=funct.createNew(parentPosition))
这是因为,通过在函数名后加上一对括号,您可以立即调用它,并将其 return 值传递给 add_command
函数。
为了解决这个问题,您可以使用 lambda
关键字来延迟函数的执行,直到它被再次调用:
file.add_command(label='Create new tracker', command=lambda: funct.createNew(parentPosition))
您可以找到有关 lambda 函数的更多信息 here。