如何解决如果函数位于单独的 .py 文件中,如何将函数传递给 tkinter 类?
我试图在我的“main.py”文件中使用这个“search_pressed()”函数作为一个命令传递到我的 Tk 类中一个名为“main_window.py”的单独文件中
但是当我尝试运行代码时,它说:
NameError: name 'tkinter_menu' is not defined
from main_window import MainMenu
def search_pressed():
tk_data = tkinter_menu.get_tk_entries()
print(tk_data)
tkinter_menu = MainMenu(search_pressed)
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,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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。