关于tkinter目录路径

时间:2020-09-13 07:09:11

标签: 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()

1 个答案:

答案 0 :(得分:1)

ask()中,您将设置为变量:dirnamefilename

这两个变量默认情况下设置为局部变量(在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 dirnameglobal filename,代码也将运行。

相关问题