ярлык не отображается в tkinter - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь изменить этот скрипт в python 3.6, но у меня проблема с ярлыком, который не отображается внизу. Вот код:

from tkinter import *

def sel():
    global selection
    if value==1:#value and var1 are in radiobutton R1
        selection = "You selected the option " + str(var1.get())
    elif value==2:#value and var2 are in radiobutton R2
        selection = "You selected the option " + str(var2.get())
    elif value==3:#value and var3 are in radiobutton R3
        selection = "You selected the option " + str(var3.get())
    label.config(text = selection)

root = Tk()
root.geometry('350x250')
value=IntVar()
var1 = IntVar()
var2 = IntVar()
var3 = IntVar()

R1 = Radiobutton(root, text="Option 1", variable=var1, value=1,
                  command=sel)
R1.pack( anchor = W )

R2 = Radiobutton(root, text="Option 2", variable=var2, value=2,
                  command=sel)
R2.pack( anchor = W )

R3 = Radiobutton(root, text="Option 3", variable=var3, value=3,
                  command=sel)
R3.pack( anchor = W)

label = Label(root)
label.pack()
root.mainloop()

, когда я выбираю одну из радиокнопокобычно метка должна отображаться ниже, но не отображается в нижней части кнопки радио, и возникает эта ошибка:

NameError: имя 'selection' не определено

1 Ответ

0 голосов
/ 17 декабря 2018

Значение «value» никогда не меняется.А это значит, что функция, которую вы вызываете, никогда не дает выбору значения.Так как выбор не имеет значения, но вы используете его в любом случае, вы получите nameError.

Я бы предпочел использовать лямбду в командах кнопок, как это:

from tkinter import *

def sel(value):
    selection = "You selected the option {}".format(value)
    label.configure(text=selection)

root = Tk()
root.geometry('350x250')
selection = "StartText"
R1 = Radiobutton(root, text="Option 1",command=lambda: sel(1))
R1.pack()
R2 = Radiobutton(root, text="Option 2",command=lambda: sel(2))
R2.pack()
R3 = Radiobutton(root, text="Option 3",command=lambda: sel(3))
R3.pack()

label = Label(root, text=selection)
label.pack()
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...