2017-02-15 63 views
0

我想在tkinter中創建一個瀏覽按鈕。我創建了打開的文件夾對話框,但是當我將它設置爲按鈕時,它將退出窗口。Tkinter瀏覽按鈕自刪除

我的最終目標是: 1)點擊按鈕和彈出文件對話框 2)選擇一個文件 3)插入的文件名到輸入控件供以後使用

我應該請注意,我對以下代碼使用了多個窗口框架進行了總結。

import os 
import sys 
import Tkinter as tk 
from tkFileDialog import askopenfilename 

def openFile(entryWidgetName): 
    tk.Tk().withdraw() 
    filename = askopenfilename() 
    entryWidgetName.delete(0,tk.END) 
    entryWidgetName.insert(0,filename) 
    return 

class Welcome(): 
    def __init__(self,master): 
     self.buttonNewTemplate = tk.Button(self.master, text = 'Create a New Template', command = self.gotoNewTemplate).place(x=100, y=250) 
    def gotoNewTemplate(self): 
     root2 = tk.Toplevel(self.master) 
     newTemplate = NewTemplate(root2) 


class NewTemplate(): 
    def __init__(self, master): 
     #Entry Windows 
     self.uploadFile = tk.Entry(self.sectionFrame2, width = 80).grid(row=4, column = 1, sticky = 'w') 
     #Buttons 
     self.buttonBrowse=tk.Button(self.sectionFrame2, text='Browse', fg='blue', command=lambda:openFile(uploadFile)).grid(row=4, column = 0, padx = 10, sticky = 'w') 

每次我點擊瀏覽按鈕時,第二個窗口會自行破壞,使我回到主頁面。

有沒有人有任何建議?

回答

0

tkinter應用程序只能有一個Tk的實例。您正在創建至少兩個:一個明確地在openFile中,另一個明確地或明確地來自代碼中的其他位置。

由於調用openFile的唯一方法是單擊按鈕,唯一能點擊按鈕的方法是擁有一個按鈕,並且擁有按鈕的唯一方法是擁有一個根窗口,您需要刪除語句tk.Tk().withdraw(),因爲它正在創建一個新的根窗口。

您的代碼中可能存在其他問題,但根據問題中的不完整代碼無法知道。