我想在#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()
答案 0 :(得分:1)
在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
,代码也将运行。