Tkinter Radiobutton выдает во втором окне - PullRequest
0 голосов
/ 16 января 2019

У меня есть школьный проект по созданию сайта в tkinter python.Моя проблема в функции "Whats_for_dinner".И моя проверка, и переключатели не заменяют переменную, чтобы я мог определить, какая из них выбрана (т.е. переключатель переключается на ноль вместо изменения на 1, 2, 3 и т. Д.).Кроме того, переключатели имеют более одного выбранного.

Любая помощь приветствуется.

Я довольно новичок в программировании на python, поэтому простейшие исправления могут быть лучше всего для меня понять.

Это мой код:

#Description: This GUI program will imitate an online sevice
# like Uber Eats. Another feature is a quiz for the user to take
# too make a good sugestion on a food you can order to eat.
import tkinter
import tkinter.messagebox

class MyGUI:
    def __init__(self):

        # Create the main window widget.
        self.main_window = tkinter.Tk()

        #Frames
        self.quizFrame = tkinter.Frame(self.main_window)
        #Quiz button
        self.quiz = tkinter.Button (self.quizFrame, bg = 'light green', font = 'Cipote 55 bold', text = "What's for Dinner?", command = self.Whats_for_dinner)
        #Pack Quiz Buttons
        self.quiz.pack()
        #Pack Frames
        self.quizFrame.pack()
        # Enter the tkinter main loop.
        tkinter.mainloop()
    def Whats_for_dinner(self):
        #Create main window widget
        self.second_window = tkinter.Tk()
        #Frames
        self.question1_frame = tkinter.Frame(self.second_window)
        self.buttonFrame = tkinter.Frame(self.second_window)
        #Question 1
        self.Q1Label = tkinter.Label(self.question1_frame, font = 'times 14 bold', text = 'Are you...')
        self.Q1 = tkinter.IntVar()
        self.Q1.set(0)
        self.vegitarian = tkinter.Radiobutton(self.question1_frame, text = 'Vegitarian', variable = self.Q1, value=1)
        self.pescetarian = tkinter.Radiobutton(self.question1_frame, text = 'Pescetarian', variable = self.Q1, value=2)        
        self.vegan = tkinter.Radiobutton(self.question1_frame, text = 'Vegan', variable = self.Q1, value=3)
        self.NR = tkinter.Radiobutton(self.question1_frame, text = 'No restriction', variable = self.Q1, value=4) #NR stands for No Restriction
        # Make What's for dinner button and refresh button
        self.whats_for_dinner = tkinter.Button(self.buttonFrame, text = "What's for Dinner?", command = self.calculate)
        #Pack Questions
        self.Q1Label.pack()
        self.vegitarian.pack(side = 'left')
        self.pescetarian.pack(side = 'left')
        self.vegan.pack(side = 'left')
        self.NR.pack(side = 'left')
        #Pack Buttons
        self.whats_for_dinner.pack(side = 'left')
        #Pack Frames
        self.question1_frame.pack()
        self.buttonFrame.pack()

    def calculate(self):
        tkinter.messagebox.showinfo('Food', str(self.Q1.get()))


# Create an instance of the MyGUI class.
my_gui = MyGUI()

Примечание: нажмите зеленую кнопку, чтобы перейти к переключателям

1 Ответ

0 голосов
/ 16 января 2019

Проблема здесь заключается в использовании двух Tk() окон в одной программе.

Просто измените эту строку

self.second_window = tkinter.Tk()

с

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