2017-12-05 2 views
0

私のコードに少し問題があります。私は、異なるGUIインターフェースを持つ複数のクラスをプロジェクトとして作成しています。ただし、これらのクラスをインポートするたびに、GUIウィンドウが自動的にウィンドウを開き、ボタンをクリックしたときにのみウィンドウを開くようにします。ボタンが開くまで、tkinterクラスオブジェクトを開くのを止める方法はありますか

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は、クラスを使って行うことができます。私を信じて、これをやるより簡単な方法を見つけました。参考までに、より多くのコードがありますが、私はもっと重要な部分だけをコピーしました。

+0

代わりに、メソッドよりも予約された_class_を使用できます。 – Nae

答えて

0

メソッドを使用する代わりに、tkinter.Toplevelを継承するクラス、ReserveAddReserveBookとして予約オプションウィンドウを定義することができます。そしてボタンは、それらを呼び出すことだけです。ここでの例は次のとおりReserve Option 2ReserveBookクラスのインスタンスを呼び出すのに対し、上記の例では

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 1ReserveAddクラスのインスタンスを呼び出します。

私はボタンのための単一のメソッドを定義したいと思いますが、それはここでの範囲ではありません。

関連する問題