[英]Python Tkinter retrieving input of multiple values
这是下面的代码,我在从多个值检索输入方面遇到问题。 我已经在这个问题上工作了一段时间,没有任何建议。 我非常感谢您的见解; 但是,我机智。 如果有人可以为我的代码提供修复,我将非常感激。
#!C:/Python27/python.exe
from Tkinter import *
import ImageTk, Image
root = Tk()
root.title('HADOUKEN!')
def retrieve_input(text,chkvar,v):
textarea_result = text.get()
checkbox_result = chkvar.get()
radiobutton_result = v.get()
root.destroy()
text = Text(root, height=16, width=40)
scroll = Scrollbar(root, command=text.yview)
text.configure(yscrollcommand=scroll.set)
text.grid(sticky=E)
scroll.grid(row=0,column=1,sticky='ns')
text.focus()
chkvar = IntVar()
chkvar.set(0)
c = Checkbutton(root, text="CaseIt", variable=chkvar)
c.grid(row=1,column=0,sticky=W)
v = ""
radio1 = Radiobutton(root, text="Src", variable=v, value=1)
radio1.grid(row=1,column=0)
radio1.focus()
radio2 = Radiobutton(root, text="Dst", variable=v, value=2)
radio2.grid(row=2,column=0)
b1 = Button(root, text="Submit", command=lambda: retrieve_input(text,chkvar,v))
b1.grid(row=1, column=2)
img = ImageTk.PhotoImage(Image.open("Hadoken.gif"))
panel = Label(root, image = img)
panel.grid(row=0, column=2)
root.mainloop()
print textarea_result
print checkbox_result
print radiobutton_result
您的代码中有几个问题,尽管其中大多数会产生错误,这些错误应该是不言自明的。 我的建议是从一个单一的小部件开始,并为此进行工作以减少可能出错的次数。 工作完成后,您就可以在学习如何使用该小部件时一次添加一个小部件。
话虽如此,这是我发现的最明显的错误:
第一个问题是您错误地调用了文本小部件的get
方法。 该方法记录有两个参数-起始索引和终止索引。 由于tkinter总是添加尾随换行符,因此您希望获得从开头(“ 1.0”)到结尾减去一个字符(“ end-1c”)的所有内容。 因此,您应该像这样在文本小部件中获取值:
textarea_result = text.get("1.0", "end-1c")
第二个问题是, retrieve_input
似乎假设v
是StringVar或IntVa,因为您正在对其调用get
方法。 假设您正在通过单选按钮使用该变量,那就应该如此。 但是,您将其创建为普通变量,当然它没有get
方法。 您应该将其声明为特殊的tkinter变量之一:
...
v = StringVar()
radio1 = Radiobutton(root, text="Src", variable=v, value=1)
...
第三个问题是, retrieve_input
正在设置局部变量。 如果要设置全局变量的值(我假设,因为您稍后在销毁小部件之后尝试访问它们),则需要将它们声明为全局变量:
def retrieve_input(text,chkvar,v):
global textarea_result, checkbox_result, radiobutton_result
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.