2017-02-15 74 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(),因为它正在创建一个新的根窗口。

您的代码中可能存在其他问题,但根据问题中的不完整代码无法知道。