Открытие нового графического интерфейса из графического интерфейса

обновленный код согласно комментариям ниже

Я изо всех сил пытаюсь заставить мой верхний уровень открываться при нажатии кнопки!

Я отсканировал код здесь, но, похоже, не смог найти решение. Моя последняя ошибка:

AttributeError: у объекта "_tkinter.tkapp" нет атрибута "недоступен"

    from tkinter import *
from ScheduleApi import flightData
import config
from itinerary import fltCreate

class FrontEnd:
    def __init__(self, master):
        self.master = master
        master.title("A simple GUI")

        self.label = Label(master, text="This is our first GUI!")
        self.label.grid()

        self.greet_button = Button(master, text="Create Itinerary", command=self.ItinBuilder)
        self.greet_button.grid(row=1)

        self.close_button = Button(master, text="Close", command=master.quit)
        self.close_button.grid(row=2)



    def greet(self):
        print("Greetings!")

    def ItinBuilder(self):
        self = Toplevel(self.master)
        self.title ("Please build your itinerary")

        self.addflt_button = Button(self.master, text="add flights", command=fltCreate)
        self.addflt_button.grid(row=1)

        self.addfhtl_button = Button(self.master, text="add hotel", command=self.master.unavail)
        self.addflt_button.grid(row=1, column=1)

        self.addfmsc_button = Button(self.master, text="add misc item", command=self.master.unavail)
        self.addflt_button.grid(row=2, column=1)

        self.prvitin_button = Button(self.master, text="preview", command=self.master.unavail)
        self.addflt_button.grid(row=2, column=1)



    def unavail(self,  Toplevel):
        print("Function not yet available.")



root = Tk()
my_gui = FrontEnd(root)
root.mainloop()

1 ответ

Пожалуйста, измените вашу функцию ItinBuilder к этому. Я надеюсь, что это то, что вы ожидаете.

def ItinBuilder(self):
    self.newWindow = Toplevel(self.master)
    self.newWindow.title ("Please build your itinerary")

    self.addflt_button = Button(self.newWindow, text="add flights", command=fltCreate)
    self.addflt_button.grid(row=0)

    self.addfhtl_button = Button(self.newWindow, text="add hotel", command=self.master.unavail)
    self.addfhtl_button.grid(row=0, column=1)

    self.addfmsc_button = Button(self.newWindow, text="add misc item", command=self.master.unavail)
    self.addfmsc_button.grid(row=1, column=0)

    self.prvitin_button = Button(self.newWindow, text="preview", command=self.master.unavail)
    self.prvitin_button.grid(row=1, column=1)

add flights кнопка находится в главном графическом интерфейсе, потому что вы передали ссылку на главное окно self.master как первый аргумент (называемый parent в tkinter) в вашем коде.

Только add_flights Кнопка видна, а не другие, потому что вы позвонили grid метод только для self.addflt_button и не для других кнопок (я думаю, пропущено изменение имен переменных в других вызовах).

Другие вопросы по тегам