Я новичок в python, и я пытаюсь создать программу, которая попросит пользователя выбрать файл изображения, используя tk.filedialog
, а затем выполнить некоторую работу с PIL
над ним .., потому что я сделал кнопку, что on-press
будет выполнять функцию (Button = tk.Button(win, text="Select File", command=buttonFunc
)), а параметр command
принимает только имя функции, я определил функцию, чтобы открыть диалог и позволить пользователю выбрать файл, я хотел, чтобы моя функция чтобы сохранить путь к выбранному файлу (в данном случае в переменной path ), он сохраняет путь в локальной переменной, но я хочу использовать его и вне функции, я использовал global
оператор, чтобы сделать переменную глобальной, но она, кажется, не работает ..
import tkinter as tk
import turtle
from tkinter import filedialog
from tkinter import PhotoImage
import os
from tkinter import INSERT
from tkinter import TOP
from tkinter import LEFT
from tkinter import *
from PIL import Image
from PIL import ImageEnhance
import time
# Main Screen
win = tk.Tk()
win.title('Color Enhancer')
win.geometry('500x70')
# Below line of code is used to set window icon, Not really sure how it works, copied from Net and pasted here.
win.tk.call('wm', 'iconphoto', win._w, tk.PhotoImage(file='icon.gif'))
Lab = tk.Label(win, text='Welcome to Color Enhancer, This mini utility is written purely in \n'
'Python and can be used to change colors of given Image, Select \n'
' image and see the magic.')
Lab.pack()
def buttonFunc():
global path
path = tk.filedialog.askopenfilenames()
print(path)
# buttonFunc() --> Works fine if i call it here, But it opens the dialog before even the button appears..
button = tk.Button(win, text='Select File', command=buttonFunc)
button.pack(side=BOTTOM)
print(path)
win.mainloop()
Я попытался запустить код, и он выдает следующую ошибку,
Traceback (most recent call last):
File "C:\Users\iMacPro 2K19\Desktop\Main\Python\Scratches\PIL_Edit.py", line 34, in <module>
print(path)
NameError: name 'path' is not defined
Я знаю, что это говорит о том, что путь не определен ... но, как вы можете видеть, я определил его, а также сделал его глобальным ... Одна вещь, я хочу сказать, что если я позвоню buttonFunc()
после определения .. Работает .. Но открывается диалоговое окно, прежде чем я нажимаю Кнопка e .. Есть ли другой способ решить ее, или кто-то, пожалуйста, скажите мне, где я иду не так ..