Дождитесь нажатия кнопки после выбора Radiobutton, затем выполните команду (Tkinter) - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю над программой, которая использует радиопереключатели.По сути, у меня есть 3 радиокнопки с разными опциями и кнопка под ними.В настоящее время, если я выбираю одну из этих радиокнопок, она мгновенно запускает команду, которой было сказано.Но как бы я выполнил эту команду только после нажатия главной кнопки, вроде «Вы уверены?».Я написал некоторый код в качестве примера:

from tkinter import*

def one():
    print("one")

def two():
    print("two")

def three():
    print("three")

root = tk()
root.title("test")
root.geometry(750x650)

mainbutton = Button(root, text="Sign up to Meme Delivery" width=20, height=3).place(x=215, y=500)

check1 = Radiobutton(root, value = 1, command=one, text="Option 1 " ).place(x=215, y=300)
check2 = Radiobutton(root, value = 2, command=two, text="Option 2").place(x=215, y=340)
check3 = Radiobutton(root, value = 3, command=three, text="Option 3").place(x=215, y=380)

root.mainloop()

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

1 Ответ

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

Вам необходимо использовать атрибут variable RadioButton, который устанавливает эту переменную в значение соответствующей радиокнопки.Вот пример.

from tkinter import *

def optionselected():
    value = check.get()
    if value == 1:
        print("one")
    elif value == 2:
        print("two")
    elif value == 3:
        print("three")


root = Tk()
root.title("test")

check = IntVar()

Button(root, text="Sign up to Meme Delivery", width=20, height=3, command=optionselected).grid(row=3)

Radiobutton(root, value = 1, variable=check, text="Option 1").grid(row=0)
Radiobutton(root, value = 2, variable=check, text="Option 2").grid(row=1)
Radiobutton(root, value = 3, variable=check, text="Option 3").grid(row=2)
root.mainloop()
...