从gui打开一个新的gui

时间:2019-01-24 22:38:20

标签: python user-interface tkinter tkinter-layout

根据以下注释更新了代码

我正在努力让我的顶级按钮打开!

我已经在这里扫描了代码,但似乎无法获得唤醒解决方案。我最新的错误是:

  

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 :(得分:0)

请将功能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按钮位于主GUI中,因为您将引用作为第一个参数(在tkinter中称为parent)传递给了主窗口self.master

仅显示add_flights按钮,而不显示其他按钮,因为您仅为grid而不是其他按钮调用了self.addflt_button方法(我猜想不能在其他调用中更改变量名)。 / p>

相关问题