2017-09-15 1 views
0

序文:Pythonの:どのようにダイアログウィンドウを作成する前に、メインのアプリにWindowsの

私が働いてGUI(私たちはMainGUIそれを呼びましょう)とPythonのControlGPIOコードを持っています。

MainGUIで機能を有効/無効にできるように、MainGUIを実行する前にダイアログポップアップウィンドウを表示したいとします。 BUT MainGUIは、ダイアログポップアップウィンドウが閉じられた後にのみ実行を開始する必要があります。

私の質問は、MainGUIが閉じられるまで延期するポップアップウィンドウを作るにはどうすればいいですか? boot_windows below-

コードは、私はあなたが何を正確に行うことができません

root = Tk() 
#output_gpioPins = [4,22,6,26] 
#input_gpioPins = [3,21,5,27] 
#ip = '192.168.2.112' 

boot_windows = Toplevel(root) 
text1 = ttk.Label(boot_windows, text="Hello World !!!") 
text1.grid() 

App = ContorlGPIOWindow(root, ip = '192.168.2.113', with_sf_bt=1, with_hw_bt=1, switch_names=['Light Kitchen','Light Room1', 'Window1', 'Window2']) 

root.mainloop() 

答えて

1

を必要とするようAppを延期しない、明らかに(すべての有効/無効のチェックボックスがなる)私のダイアログポップアップウィンドウですが、欲しいです。ウィジェットは木のような構造で存在します。ルート以外のすべてのウィンドウにはルートウィンドウが必要です。最初にルートウィンドウを作成する必要があります(そのため、ルートウィンドウと呼ばれています)。

ユーザーに表示させたくない場合は、表示する準備ができるまで非表示にすることができます。

import tkinter as tk 
root = tk.Tk() 
root.withdraw() 
boot_window = tk.Toplevel(...) 
... 

root.deiconify()は、表示する準備ができたら電話をかけることができます。

もう1つの一般的な解決方法は、ダイアログまたはスプラッシュ画面などのルートウィンドウを使用して、準備ができたら内容を実際の内容に置き換えることです。

ポップアップを待つ方法は...ルートウィンドウにはwait_windowというメソッドがあり、イベントループに入り、指定されたウィンドウが破棄されるまで戻りません。あなたの答えのための

import Tkinter as tk 

class MainGUI(tk.Frame): 
    def __init__(self, parent): 
     tk.Frame.__init__(self, parent) 
     label = tk.Label(self, text="Hello, world!") 
     label.pack(fill="both", expand=True, padx=20, pady=20) 

class Popup(tk.Toplevel): 
    def __init__(self, root): 
     tk.Toplevel.__init__(self, root) 
     label = tk.Label(self, text="Click to continue...") 
     label.pack(fill="both", expand=True, padx=20, pady=20) 

     button = tk.Button(self, text="OK", command=self.destroy) 
     button.pack(side="bottom") 

if __name__ == "__main__": 
    root = tk.Tk() 
    root.withdraw() 

    popup = Popup(root) 
    root.wait_window(popup) 

    main = MainGUI(root) 
    main.pack(fill="both", expand=True) 

    root.deiconify() 
    root.mainloop() 
+0

ありがとう:

は、ここでの使用例です。私はあなたの最初の部分を試みましたが、私は再びそれを見たい部分をコードで表現していますか? ( 'boot_winwod' closed) –

+1

@ Guy.D私が答えて言ったように、あなたは' root.deiconify() 'を使ってウィンドウを非表示にします。 –

+0

はい、この部分は理解されています。私は自分の質問を書き直します(私の貧しい英語の人には申し訳ありません):ポップアップウィンドウが開き、ユーザーがチェックボックスを選択してポップアップウィンドウを閉じるのを待っています。ポップアップウィンドウが閉じられ、 'root.deiconify()'ではなく、コードでどのように表現するのですか? –

関連する問題