python - 如果函数位于单独的 .py 文件中,如何将函数传递给 tkinter 类?
问题描述
我试图在我的“main.py”文件中使用这个“search_pressed()”函数作为一个命令传递到我的 Tk 类中的一个名为“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
未定义的原因。
要解决您的问题:
- 从
self.mainloop()
_main_window.py
- 将您的主脚本更改为:
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()
推荐阅读
- html - 仅来自具有类的元素的 CSS nth-child
- ionic-framework - 如何将离子3源直接升级到离子5?
- tensorflow - 如何从 tensorflow datasets 数据集中获取字符串映射?
- javascript - 如何在 JavaScript 中使用 appendChild
- android - 我们应该在 RecyclerView 适配器中包含 firebase 侦听器吗?
- r - r - png 中的错误:无法启动 png() - 我该如何解决这个问题?
- javascript - PrimeNG 数据表:对日期列进行排序时出现问题
- json - Breakpoint of number increase in "position()" during foreach
- go - 在将 graphql-ws 客户端与 gqlgen golang 服务器连接时,获取到“ws://localhost:7080/query”的 WebSocket 连接失败
- angularjs - 用于构建 Angular JS 应用程序包的 Azure 管道失败 - npm ERR!缺少脚本:D:\a\1\s/bundle.js