如果函数位于单独的 .py 文件中,如何将函数传递到 tkinter 类中?



我正在尝试使用这个"search_pressed(("函数在我的";main.py";文件作为一个命令在一个名为";main_window.py";

但当我尝试运行代码时,它会说:

NameError: name 'tkinter_menu' is not defined

这是我的main.py文件中的代码:

from main_window import MainMenu
def search_pressed():
tk_data = tkinter_menu.get_tk_entries()
print(tk_data)
tkinter_menu = MainMenu(search_pressed)

这是我的main_window.py文件中的代码:

from tkinter import *
class MainMenu(Tk):
def __init__(self, search_function):
super().__init__()
# Entry:
self.entry = Entry(self)
self.entry.grid(row=0, column=0, pady=2.5, columnspan=2)
# Search Button
self.search_button = Button(master=self, width=20, text="Search", bg="#53A1DB", command=search_function)
self.search_button.grid(row=1, column=0, pady=5)
self.mainloop()
def get_tk_entries(self):
tk_entry = self.entry.get()
tk_data = {
"tk entry": tk_entry,
}
return tk_data

问题是self.mainloop()从未停止,这意味着MainMenu(...)仍在运行。这就是为什么变量tkinter_menu是未定义的。

解决您的问题:

  • main_window.py中删除self.mainloop()
  • 将主脚本更改为:
from main_window import MainMenu
def search_pressed():
tk_data = tkinter_menu.get_tk_entries()
print(tk_data)
tkinter_menu = MainMenu(search_pressed)
tkinter_menu.mainloop()

相关内容

  • 没有找到相关文章

最新更新