2017-11-17 10 views
0

tkinterフレームを使用して別のtkinterフレームを呼び出しています。フレーム1から私はボタンをクリックし、C:\にファイルがあるかどうかをチェックし、そこにファイルがなければChrome_gui関数を呼び出す必要があります。tkinterフレームは"def p2(self)"です。 Chrome_guiが呼び出されると、テストファイルが作成され、ファイルがあるかどうかを確認するためにself.p2が再度呼び出されます。しかし、関数self.Chrome_guiが呼び出されないので、決して終わりのないループになります。そして、self.p2を削除すると、self.Chrome_guiという関数を呼び出すことができます。だから誰でも私はなぜそれがself.Chrome_gui機能をスキップしている教えていただけますか?Pythonが私の関数の1つをスキップしました

def __init__(self): 
    tk.Tk.__init__(self) 
    tk.Tk.title(self,"qwerty") 
    self.b1 = tk.Button(self, text="P2", command = self.p2) 
    self.b1.grid(row = 3, column = 1, sticky = 'EWNS') 


def p2 (self): 
      self.values() 
    print ('printdwo') 
    my_file1 = Path("C:\test.pdf") 
    if my_file1.is_file(): 
     print ("File Found") 
    else: 
     print ('not found') 
     self.Chrome_gui() 
     self.p2() 


def Chrome_gui(self): 
    self.chrome = tk.Tk() 
    self.chrome.title('Date') 
    self.label = tk.Label(self.chrome, text="", width=20) 
    self.label.grid(row = 1, column = 1) 

    self.c1 = tk.Button(self.chrome, text="Yes", command = self.yes) 
    self.c1.grid(row = 2, column = 1, sticky = W+E)#side = LEFT) 
    global e 
    e = "" 
    self.c2 = tk.Button(self.chrome, text = "No" , command = self.no) 
    self.c2.grid(row = 3, column = 1, sticky = W+E)#side = LEFT) 
+0

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune

+1

BTW:文字列 '\ t'はテキスト内で特別な意味を持ちます(パス内でさえ) - それはキー' tab'を意味しますので、\\や/ - C:\\ test.pdfやC:/ test.pdf – furas

+0

'Chrome_gui'が実行されるが、' p2'ループが実行される(そして、このループは決して終了しない)、すべてのウィンドウとウィジェットを作成して描画する 'root.mainloop()'を実行することはできない。 – furas

答えて

0

それは常に他の部分にself.p2()を呼んだように、あなたの条件if my_file1.is_file():は常にfalseであるため、あなたのコードがループしています。

文字列を定義しているときに '\'を配置する場合は、 '\'を付ける必要があります。あなたのケースでは、あなたは '\ t'を持っているので、それを表で置き換えます。それを置き換えてください。Path("C:\\test.pdf")

関連する問題