python中tkinter出选择题_PythonTkinter中的单选按钮值
派对有点晚了,但我在试图在Tkinter radiobuttons上到⼀些东西时偶然发现了这个问题。
问题1:
我改变了三件事:
1)在您定义之后,我⽴即将var的值设置为1。这是通过执⾏var.set(1)来完成的,并确保选择了第⼀个单选按钮(其值为1,正如您稍后在代码中定义的那样)。
2)我已使⽤名为master.quit的函数替换了quit_loop命令。在这个功能中:
var值通过print和get语句打印。 get将“获取”var的当前值,具体取决于所选的单选按钮。
我在此函数中创建了⼀个全局变量,然后get var的当前值。
我在master.quit()添加了括号,因为这不再是单选按钮的命令。请注意,如果您打算使⽤IDLE,master.destroy()可能是a more suitable alternative。
3)由于在函数中创建了selection变量,我们现在将您想要的值存储在变量中。在代码末尾有⼀个最终if -
语句,表明它正在运⾏。
from Tkinter import *
master = Tk()
var = IntVar()
var.set(1)
def quit_loop():
print "Selection:",()
global selection
selection = ()
master.quit()
Label(master, text = "Select OCR language").grid(row=0, sticky=W)
Radiobutton(master, text = "default", variable=var, value = 1).grid(row=1, sticky=W)
Radiobutton(master, text = "user-defined", variable=var, value = 2).grid(row=2, sticky=W)
Button(master, text = "OK", command=quit_loop).grid(row=3, sticky=W)
master.mainloop()
if selection == 1:
print "My Value is equal to one."
elif selection == 2:
print "My value is equal to two."
问题2:
我会保持简单,只需在你的单选按钮后添加⼀个标签和⼀个输⼊框。这意味着我们还必须处理列,因为您之前的代码中没有任何定义,这使得所有内容都默认为第0列。我们希望您的第⼆个单选按钮是“radio,label,entry”,它需要三列
1)包含"Select OCR language"的上⼀个标签将跨越三列,并在⽹格参数中添加columnspan=3。第⼀个单选按钮也是如此。
2)我在第⼆个单选按钮后添加了Label和Entry。请注意,列从0到2,定义了我们的三列。标签有⼀个简单的"Enter value:"⽂本,⽽条⽬有变量textvariable=entry_text。我将此变量entry_text添加到代码的开头,并⽴即将其值设置为###。请注意,这是string(因此,text变量),因此仅添加对整数的检查取决于您。
3)当然,这与第⼆个单选按钮⽆关。如果我们选择它,它仍然具有值2,⽽不是Entry⼩部件的值。这就是为什么在先前创建的quit_loop函数中,我添加了⼀个⼩if语句,如果选择了第⼆个单选按钮,则会将条⽬的值分配给selection。
from Tkinter import *
htmlradio的text出不来master = Tk()
var = IntVar()
var.set(1)
entry_text = StringVar()
entry_text.set("###")
def quit_loop():
print "Selection:",()
global selection
selection = ()
if selection == 2:
selection = ()
master.quit()
# Add columnspan to these widgets
Label(master, text = "Select OCR language").grid(row=0, sticky=W, columnspan=3)
Radiobutton(master, text = "default", variable=var, value = 1).grid(row=1, sticky=W, columnspan=3)
# Order these widgets in their appropriate columns
Radiobutton(master, variable=var, value = 2).grid(row=2, sticky=W, column=0)
Label(master, text="Enter value:").grid(row=2, sticky=W, column=1)
Entry(master, textvariable=entry_text).grid(row=2, sticky=W, column=2)
# Example of what happens without columnspan
Button(master, text = "OK", command=quit_loop).grid(row=3, sticky=W)
master.mainloop()
print selection
提⽰
如果这个简单的GUI仍然很⼩,那么以这种⽅式编写代码是可以的。但是,在这⽅⾯进⼀步扩展我会建议使⽤an object oriented approach,因为它确实提⾼了可读性,特别是在定义函数时。这样他们就不必事先定义。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。