python - 从存储为实例变量的 Entry 小部件中检索输入并在类外部使用它
问题描述
我在尝试从存储为实例变量的 Entry 小部件中获取输入时遇到困难,因此我可以将其用作此类外部的输入:
class CreateGUI:
def __init__(self, master):
self.master = master
self.master.geometry("275x325")
self.master.columnconfigure(0, weight=1)
self.master.columnconfigure(1, weight=2)
self.checkbutton_var1 = IntVar()
self.checkbutton_var2 = IntVar()
self.path = ''
self.type = []
def add_labels(self):
Label(self.master, text="Provide path to file:").grid(column=0, row=0, padx=10, pady=10, sticky="N")
def add_entries(self):
user_input = Entry(self.master)
user_input.grid(column=0, row=1, padx=5, pady=5, ipadx=60)
return user_input
def add_buttons(self, user_input):
checkbutton1 = Checkbutton(self.master, text="test1", variable=self.checkbutton_var1, onvalue=1,offvalue=0,height=2,width=10)
checkbutton1.grid(column=1, row=0)
checkbutton2 = Checkbutton(self.master, text="test2", variable=self.checkbutton_var2, onvalue=1, offvalue=0,height=2, width=10)
checkbutton2.grid(column=1, row=1)
button = Button(self.master, text="push", bg="pink", bd=100, fg="white",
command=lambda: self.retrieve_input(user_input.get(), self.checkbutton_var1.get(), self.checkbutton_var2.get()))
button.grid(column=0, row=3, padx=20, pady=20, sticky="NEWS")
def retrieve_input(self, p, *args):
self.path = p
#print(self.path)
for el in args:
self.type.append(el)
#print(self.type)
def main():
tk = Tk()
app = CreateGUI(tk)
app.add_labels()
user_input = app.add_entries()
app.add_buttons(user_input)
print(app.type)
print(app.path)
tk.mainloop()
当我启动程序,写入输入并按下按钮时,它不会打印任何内容。启动程序时会打印空括号。里面的retrieve_input
打印内容正是我需要的,但我需要在课堂之外输入这些内容,因为它们将成为另一个类的输入。
我尝试了与此问题相关的所有方法,但它不起作用,我真的会寻求任何帮助。谢谢!
解决方案
在任何人有机会输入之前,您就已经获得了 Entry 小部件的输入。结果,user_input.get()
将返回一个空字符串。您可以做的一件事是制作某种触发器add_buttons()
,以便用户在填写完后激活该触发器user_input
。之后的进一步调整应该可以使它工作。
请告诉我您是否还有其他问题。
推荐阅读
- react-native - 需要使用本机代码的项目?
- wordpress - wordpress wp-blog-header.php 在第 16 行
- python - 从扁平字典创建嵌套字典
- c# - 如何在 C# .net 网页上显示来自另一个线程的弹出窗口?
- python - 使用 python 电子邮件模块发送电子邮件时为主题添加颜色
- android - 如何覆盖滚动?
- c# - C# Outlook.MailItem 发件人名称编码
- c++ - 在派生类中使用基类 Copy CTOR
- java - Java Spring 将关系模型和文档模型合二为一
- oracle - 使用动态 PIVOT 时 PL/SQL 中的错误