【问题标题】:Is there a way to stop a tkinter class object from opening until the button is opened有没有办法阻止 tkinter 类对象打开,直到打开按钮
【发布时间】:2017-12-05 22:43:21
【问题描述】:

我的代码有点问题。我正在编写具有不同 GUI 界面的多个类作为一个项目。但是,每次我导入这些类时,GUI 窗口都会自动打开窗口,我希望窗口仅在单击按钮时打开。

from FinalProject import addFlight
from FinalProject import reserveFlight



class ex:
    def __init__(self,win):
        self.win = win
        ...
        ...



def mainButtons(self):
    look = Button(self.win, text="Add New Flight",command=lambda: self.reserveMenu(1))
    look.place(relx="0.2", rely="0.3")

    res = Button(self.win, text="Book A Flight",command=lambda: self.reserveMenu(2))
    res.place(relx="0.4", rely="0.3")
      ...
      ...


def reserveMenu(self, options):
    if options == 1:
        self.flight = Toplevel(self.win)
        self.flMenu = addFlight.AddFlights(self.flight)
        self.flMenu.addingFlight()
        # call(["python","addFlight.py"])
    if options == 2:
        pass
        # self.flight = Toplevel(self.win)
        # self.flMenu = reserveFlight.ReserveFlights(self.flight)
        # self.flMenu.reserve()
        # call(["python","reserveFlight.py"]) 
       ...
       ...

“reserveMenu”功能工作正常,但有没有办法抑制这些导入语句或至少阻止窗口打开,直到单击按钮。

我知道还有其他方法可以打开我的 python 代码,但是这个 HAS 需要使用 CLASSES 来完成。相信我,我找到了更简单的方法来做到这一点。仅供参考,还有更多代码,但我只复制了更重要的部分。

【问题讨论】:

  • 您可以使用保留的而不是方法。

标签: python-3.x user-interface tkinter python-3.6


【解决方案1】:

您可以将保留选项窗口定义为类ReserveAddReserveBook,而不是使用一种方法,这些类继承自tkinter.Toplevel。一个按钮所能做的就是调用它们。这是一个例子:

import tkinter as tk

root = tk.Tk()

class ReserveAdd(tk.Toplevel):
    def __init__(self, master):
        super().__init__(master)
        self.master = master
        tk.Label(self, text="This is ReserveAdd window.").pack()

class ReserveBook(tk.Toplevel):
    def __init__(self, master):
        super().__init__(master)
        self.master = master
        tk.Label(self, text="This is ReserveBook window.").pack()


def res_one():
    ReserveAdd(root)

def res_two():
    ReserveBook(root)

tk.Button(root, text="Reserve Option 1", command=res_one).pack()
tk.Button(root, text="Reserve Option 2", command=res_two).pack()

root.mainloop()

在上面的示例中,Reserve Option 1 调用了ReserveAdd 类的实例,而Reserve Option 2 调用了ReserveBook 类的实例。

我会为按钮定义一个方法,但这不完全是这里的范围。

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2021-12-03
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多