открытие нового графического интерфейса из графического интерфейса - PullRequest
0 голосов
/ 25 января 2019

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

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

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

AttributeError: у объекта _tkinter.tkapp нет атрибута 'unavail'

    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 Ответ

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

Пожалуйста, измените вашу функцию 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 в качестве первого аргумента (называемого родительским в tkinter) в вашем коде.

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

...