Открытие нового графического интерфейса из графического интерфейса
обновленный код согласно комментариям ниже
Я изо всех сил пытаюсь заставить мой верхний уровень открываться при нажатии кнопки!
Я отсканировал код здесь, но, похоже, не смог найти решение. Моя последняя ошибка:
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
и не для других кнопок (я думаю, пропущено изменение имен переменных в других вызовах).