Как сделать переключатели обязательными для выбора в tkinter python - PullRequest
0 голосов
/ 15 апреля 2020

Я работаю над небольшим проектом, чтобы создать небольшое окно, в котором будут заданы 3 вопроса и 2 варианта, поскольку для ответов будут доступны переключатели. После выбора ответов будет напечатана информация о пользователях вместе с ответами, которые позже я добавлю в базу данных. На данный момент он работает нормально с выборами, но если ни одна кнопка не выбрана и не нажата кнопка «Отправить», он по-прежнему выбирает второй вариант и позволяет войти. Здесь я хочу добавить проверку, если ни одна кнопка не выбрана, тогда должно появиться всплывающее окно с запросом выбора кнопок. Я много гуглил о том, чтобы сделать радио-кнопки обязательными, но не нашел подходящего ответа. Может кто-нибудь, пожалуйста, помогите. Ниже мой код

from tkinter import *
import tkinter.messagebox
import getpass
import socket
from datetime import datetime

root=Tk()
root.title("Survey")
root.geometry("225x225")
root.config(bg="antique white")
root.resizable(width="false", height="false")


day_selected = IntVar()
mood_selected = IntVar()
work_selected = IntVar()

# creating values for entry

staffid = getpass.getuser()
machine = socket.gethostname()
now = datetime.now()
date_str = now.strftime("%d/%m/%Y %H:%M:%S")
day_sel = day_selected.get()

def done():
    print(staffid)
    print(machine)
    print(date_str)
    print(day_sel)
    print("Good" if day_selected.get()==1 else "BAD")
    print("Good" if mood_selected.get()==3 else "BAD")
    print("Good" if work_selected.get()==5 else "BAD")
    tkinter.messagebox.showinfo("Thank you", "Thank you for completing the survey !!!")

lab1 = Label(root, text="  How Was ?", font=("calibri", 20, "bold"), bg="antique white", fg="brown").pack()

lab2 = Label(root, text="Day", font=("calibri", 14, "bold"),bg="antique white")
lab2.place(x=8, y=50)
r1=Radiobutton(root,text="Good", font=("calibri",12), variable=day_selected, value=1,bg="antique white").place(x=110,y=52)
r2=Radiobutton(root,text="Bad",font=("calibri",12), variable=day_selected, value=2,bg="antique white").place(x=170,y=52)
lab3 = Label(root, text="Mood", font=("calibri", 14, "bold"),bg="antique white")
lab3.place(x=8, y=100)
r3=Radiobutton(root,text="Good", font=("calibri",12), variable=mood_selected, value=3,bg="antique white").place(x=110,y=102)
r4=Radiobutton(root,text="Bad",font=("calibri",12), variable=mood_selected, value=4,bg="antique white").place(x=170,y=102)
lab4 = Label(root, text="Work", font=("calibri", 14, "bold"),bg="antique white")
lab4.place(x=8, y=150)
r5=Radiobutton(root,text="Good", font=("calibri",12), variable=work_selected, value=5,bg="antique white").place(x=110,y=152)
r6=Radiobutton(root,text="Bad",font=("calibri",12), variable=work_selected, value=6,bg="antique white").place(x=170,y=152)

sub_bt=Button(root, text="Submit",font=("calibri",12, "bold"), command=done, bg="brown", fg="white").pack(side=BOTTOM)

root.mainloop()

1 Ответ

0 голосов
/ 15 апреля 2020

Вы можете использовать оператор if, чтобы увидеть, если он пуст, а затем делать то, что вы хотите, вы можете изменить текст на ярлыках, чтобы сообщить пользователю. затем выполните

root.after(1000, lambda: lab2.config(text=somethingsomething))

до go назад к исходному тексту ... ну, у радиокнопок есть только 2 опции, вкл. и выкл., поэтому всегда выбирается 2-й вариант, если пользователь не трогает его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...