2016-05-04 15 views
0

a。私はメインウィンドウから子ウィンドウを開いたかったので、簡単なプログラムを作成してください。 b。開いているボタンがあります。クリックすると新しいウィンドウが開き、子ウィンドウの閉じるボタンを押すと子ウィンドウが閉じます。 c。同様に、私はエントリーウィジェットで同じオプションを望んでいました。 d。エントリウィジェットをクリックして何かを入力すると、これは子ウィンドウをポップアップしていくつかのユーザのヒントを与えます。 d。この関数は、子ウィンドウを期待どおりに開きますが、子プロセスの閉じるボタンをクリックすると閉じられません。エントリウィンドウをクリックしたときに子ウィンドウを開くと閉じられない

#!/tools/bin/python 

from Tkinter import * 
#import Tkinter as tk 

class MyFirstGUI: 

    cw = None 

    def __init__(self, master): 
     self.master = master 
     master.title("A simple GUI") 

     self.label = Label(master, text="This is our first GUI!") 
     self.label.pack() 

     self.greet_button = Button(master, text="Greet", command=self.greet) 
     self.greet_button.pack() 

     self.close_button = Button(master, text="Close", command=quit) 
     self.close_button.pack() 

     self.open_button = Button(master, text="Open", command=self.create_window) 
     self.open_button.pack() 

     self.scae1 = Entry(root, width=43, bg="yellow") 
     self.scae1.delete(0, END) 
     self.scae1.insert(0, 'Enter The World') 
     self.scae1.bind('<FocusIn>', self.scae1_entry_click) 
     self.scae1.pack() 


    def greet(self): 
     print("Greetings!") 

    def create_window(self): 
     self.cw = Toplevel() 
     self.cw.wm_title("A New Window") 
     self.l = Label(self.cw, text="This is window") 
     self.l.pack() 

     self.cw_text = Text(self.cw) 
     self.cw_text.insert('1.0', "Please Enter the Following") 
     self.cw_text.pack() 

     self.close_button = Button(self.cw, text="Close", command=self.close_window) 
     self.close_button.pack() 

    def close_window(self): 
     if self.cw: 
      try: self.cw.destroy() 
      except(): pass # fill in the error here 
      self.cw = None  

    def scae1_entry_click(self,event): 
     if (self.scae1): 
      if self.scae1.get() == 'Enter The World': 
       self.scae1.delete(0, "end") # delete all the text in the entry 
       self.scae1.insert(0, '') #Insert blank for user input 
       self.scae1.configure(bg="white") 
      self.create_window() 

root = Tk() 
my_gui = MyFirstGUI(root) 
root.mainloop() 

誰もがあなたがエントリウィジェットから、それを開くと、この子ウィンドウが閉じて取得されていない理由をいくつかの提案やコメントを与える場合、それは素晴らしいことです。前売で

おかげで、 Vimo

答えて

0

うわー、それは非常に興味深いエラーでした。しかし、あなたのロジックにはループがあります。だから起こっているのは、最上部のウィンドウを閉じると、Entry - ウィジェットが自動的にフォーカスを得ることです。これが発生した場合、バインドが再度トリガーされます。

self.scae1.bind('<Button-1>', self.scae1_entry_click) 

またはあなたの項目がフォーカスを失ったことを確認してください。これに

self.scae1.bind('<FocusIn>', self.scae1_entry_click) 

:だから、この行を変更します。

+0

ありがとうございましたVRange ..それは働いた..同じイベントに2つのオプションをマップすることは可能ですか? self.scae1.bind( ''、self.scae1_entry_click)? ? – Vimo

+0

問題はありません、この答えを正しいplsとしてマークしてください。 self.scae1.bind( ''、self.scae1_entry_click) self.scae1.bind( ''、self.scae1_entry_click) 'あなたは' bind'メソッドを複数回使うことができます。 – VRage

関連する問題