python - 关于 tkinter 目录路径
问题描述
我想在#here中插入文件的路径!但我的终端花费名称'dirname'未定义消息:(...
我不知道为什么会发生这个错误..我省略了一些代码:)...感谢您阅读
import tkinter
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
from PIL import Image
import pytesseract
def ask():
dirname = filedialog.askopenfile(
initialdir='C:/Users/PC/Desktop',
title='파일 선택',
filetypes=(('png 파일','*.png'), ('jpg 파일', '*jpg'), ('모든 파일 보기', '*.*'))
)
filename = tkinter.filedialog.asksaveasfilename()
Txt.configure(text='경로 :' + dirname.name)
def ocr():
pytesseract.pytesseract.tesseract_cmd = r'C:\Users\PC\AppData\Local\Tesseract-OCR\tesseract.exe'
text = pytesseract.image_to_string(Image.open(#here!), lang="kor")
print(text)
Txt = Label(window, text = ' ')
Txt.pack()
path_button = Button(window, text="경로 선택하기", command = ask)
path_button.pack()
button = Button (window, width = 10, text = "선택하기", overrelief="solid", command = ocr) # 확인 버튼
button.pack()
window.mainloop()
解决方案
在ask()
你设置变量:dirname
和filename
。
这两个变量默认设置为局部变量(它们在ask()
函数外不可见)。这就是您无法访问它们的原因。
您可以通过将它们设置为全局来修补它:
#AFTER THE IMPORTS
filename = "some_default_filename.png"
dirname = "/some/default/path/"
#INSERT THIS AT THE BEGINNING OF ASK()
def ask():
global filename
global dirname
filename = ..... #Your code
#YOU WILL BE ABLE TO ACCESS THEM TO OCR()
def ocr():
#.......
Image.open(dirname + filename)
#.......
请注意,如果您不需要编辑变量,则不需要将其声明为全局的,python 将默认情况下假定。您仍然可以添加global dirname
,global filename
如果您愿意,代码也将运行。