您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python Tkinter中的单选按钮值

Python Tkinter中的单选按钮值

聚会晚了一点,但是我在尝试在Tkinter单选按钮上找到东西时偶然发现了这个问题。

我改变了三件事:

1)我立即设置的值var1你定义后。这样做var.set(1)可以确保您选择了第一个单选按钮(其值为1,如稍后在代码中所定义)。

2)我已将您的master.quit命令替换为quit_loop。在此功能中:

3)由于selection函数中创建了变量,我们现在将所需的值存储在变量中。if代码的末尾有一个最终声明,表明它是有效的。

from Tkinter import *

master = Tk()
var = IntVar()
var.set(1)

def quit_loop():
    print "Selection:",var.get()
    global selection
    selection = var.get()
    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."

我会保持简单,只需在您的单选按钮之后添加标签和输入框即可。这意味着我们还必须使用列,因为您在先前的代码中没有定义任何列,这使所有内容认为列0。我们希望您的第二个单选按钮为“ radio,label,entry”,该列需要三列。

1)先前包含的标签"Select OCR language"将跨越三列,并columnspan=3添加到网格参数中。第一个单选按钮也是如此。

2)我在您的第二个单选按钮之后添加一个Label一个Entry。请注意,列从0到2,定义了我们的三列。标签具有简单"Enter value:"文本,而条目具有变量textvariable=entry_text。我将此变量添加entry_text到了代码的开头,并立即将其值设置为###。请注意,这是一个string(因此,文本 变量),因此仅由整数决定是否添加检查。

3)当然,这没有链接到第二个单选按钮。如果我们选择它,它的值为2,而不是Entry小部件的值。这就是为什么在先前创建的quit_loop函数中,添加了一条小if语句,该语句将条目的值分配给selection是否选择了第二个单选按钮。

from Tkinter import *

master = Tk()
var = IntVar()
var.set(1)

entry_text = StringVar()
entry_text.set("###")

def quit_loop():
    print "Selection:",var.get()
    global selection
    selection = var.get()

    if selection == 2:
        selection = entry_text.get()

    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仍然很小,则可以用这种方式编写代码。但是,在此基础上进行大量扩展,我建议您采用面向对象的方法,因为它确实可以大大提高可读性,尤其是在定义函数时。这样,就不必事先定义它们。

python 2022/1/1 18:28:01 有198人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶