繁体   English   中英

Python Tkinter检索多个值的输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM