Tkinter浏览按钮自删除

时间:2017-02-15 01:27:02

标签: python python-2.7 tkinter

我正在尝试在tkinter中创建一个浏览按钮。我创建了打开文件夹对话框,但当我将其设置为按钮时,它将退出窗口。

我的最终目标是: 1)单击按钮,调出文件对话框 2)选择一个文件 3)将文件名插入Entry Widget以供以后使用

我应该注意到,我使用多个窗口框架来总结后面的代码。

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')

每次单击浏览按钮时,第二个窗口都会自行消失,然后将我带回主页面。

有人有任何建议吗?

1 个答案:

答案 0 :(得分:0)

tkinter应用程序只能有Tk的单个实例。您正在创建至少两个:一个在openFile中显式创建,另一个在代码中的其他位置隐式或显式创建。

由于调用openFile的唯一方法是单击按钮,单击按钮的唯一方法是使用按钮,只有一个按钮的方法是已经有一个根窗口,你需要删除语句tk.Tk().withdraw(),因为那是创建一个新的根窗口。

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