我正在尝试在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')
每次单击浏览按钮时,第二个窗口都会自行消失,然后将我带回主页面。
有人有任何建议吗?
答案 0 :(得分:0)
tkinter应用程序只能有Tk
的单个实例。您正在创建至少两个:一个在openFile
中显式创建,另一个在代码中的其他位置隐式或显式创建。
由于调用openFile
的唯一方法是单击按钮,单击按钮的唯一方法是使用按钮,只有一个按钮的方法是已经有一个根窗口,你需要删除语句tk.Tk().withdraw()
,因为那是创建一个新的根窗口。
您的代码中可能存在其他问题,但根据问题中的不完整代码无法知道。