Reputation: 193
I'm trying to run this function as long as entry is 1 or 2. but after the first valid input (1 or 2) the second one doesn't do anything and seems to get stuck in the loop
(the function prints the chosen file name + the input number)
from tkinter import Tk
from tkinter.filedialog import askopenfilename
Tk().withdraw() # there's no need to open the full GUI
def my_filebrowser(command):
filename = askopenfilename()
print(filename, command)
while True:
command = int(input('enter command: '))
if command == 1:
my_filebrowser(command)
elif command == 2:
my_filebrowser(command)
else:
break
how should I change the code in order to use the tkinter file browser (askopenfilename() function) multiple times?
Upvotes: 1
Views: 971
Reputation: 8037
You could simply create and destroy the root window to achive that, but it isnt a high performance approach.
from tkinter import Tk
from tkinter.filedialog import askopenfilename
def my_filebrowser(command):
root = Tk(); root.withdraw()
filename = askopenfilename()
print(filename, command)
root.destroy()
while True:
command = int(input('enter command: '))
if command == 1:
my_filebrowser(command)
elif command == 2:
my_filebrowser(command)
else:
break
You can modify this code to have the filedialog in the front and in the middle of the screen. I also added alpha for transparency that you dosent even notice what happens:
def my_filebrowser(command):
root = Tk(); root.attributes('-alpha',0.01)
root.attributes('-topmost',True)
root.tk.eval(f'tk::PlaceWindow {root._w} center')
root.withdraw()
filename = askopenfilename()
root.destroy()
print(filename, command)
Upvotes: 1