gpt4 book ai didi

python - 使用 Tkinter 创建一个 GUI,用于创建文件夹并解压 ZIP 文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:24 26 4
gpt4 key购买 nike

各位程序员大家好,

我正在尝试使用 Tkinter 制作 GUI。这是我第一次使用 Tkinter,并且遇到了一些问题。脚本和 GUI 应执行以下操作:

  1. 要求用户(通过输入和“确定”按钮)输入工作文件夹的名称。结果->在系统桌面上创建新建的文件夹。
  2. 通过 TkFileDialog 选择一个 OWL 文件(这是一个 zip 文件)。结果 -> 在步骤 1 中创建的文件夹中解开选定的 zip 文件。

到目前为止我使用在线教程编写的脚本:

    import Tkinter
import Tkconstants
import tkFileDialog
import zipfile
from Tkinter import *
import os

class TkFileDialogExample(Tkinter.Frame):

def __init__(self, root):

Tkinter.Frame.__init__(self, root)

root.configure(background='lightgrey')
root.wm_title("Audit tool: Thickness of pavement")
root.geometry('{}x{}'.format(500, 500))

Label_1 = Message(root, text="Step 1. Please fill in the name of the output folder and click on 'create'. The output folder will be created in the desktop folder:", width=380,)
Label_1.grid(row=1, columnspan=5)

Entry1 = Entry(root)
Entry1.grid(row=2, sticky=E)

folder_location = '~/Desktop/' + Entry1.get()

def createname():

return os.mkdir(os.path.expanduser(folder_location))

button_1 = Button(root, text="Create", command=createname)
button_1.grid(row=2, column =1, sticky=W)

Label_3 = Message(root, text="Step 2. Please select the OWL file:", width=300,)
Label_3.grid(row=5, sticky=W)

button_2 = Button(self, text='Click here to select the OWL file', command=self.askopenfilename)
button_2.grid(row=4,column=1, sticky=W)

self.file_opt = options = {}
options['defaultextension'] = '.owl'
options['filetypes'] = [('all files', '.*'), ('owl files', '.owl')]
options['initialdir'] = 'C:\\'
options['initialfile'] = 'Title_of_OWL-file.ccr'
options['parent'] = root
options['title'] = 'This is a title'

self.dir_opt = options = {}
options['initialdir'] = 'C:\\'
options['mustexist'] = False
options['parent'] = root

def askopenfile(self):

return tkFileDialog.askopenfile(mode='r', **self.file_opt)

def askopenfilename(self):

filename = tkFileDialog.askopenfilename(**self.file_opt)
zip_ref = zipfile.ZipFile(filename, 'r')

if filename:
return zip_ref.extractall(folder_location)

if __name__=='__main__':
root = Tkinter.Tk()
TkFileDialogExample(root).grid()
root.mainloop()

问题可能出在“folder_location”的第三次使用中。由于我对Python语言比较陌生,所以我似乎找不到解决这个问题的方法。

感谢您的帮助和时间!

真诚的,

鲁本·范德海登

最佳答案

问题是您仅在 TkFileDialogExample.__init__ 方法的本地范围内定义了变量 folder_location。因此,类中的任何其他方法都无法访问它。如果您确实希望它可访问,那么您需要使用 self 关键字将其设置为类的属性。

def __init__(self, root):

# Stuff

self.folder_location = os.path.join('~', 'Desktop', Entry1.get())

然后您可以从 TkFileDialogExample.askopenfilename 方法访问它:

def askopenfilename(self):

filename = tkFileDialog.askopenfilename(**self.file_opt)
zip_ref = zipfile.ZipFile(filename, 'r')

if filename:
return zip_ref.extractall(self.folder_location)

旁注:一般来说,最好使用 os.path.join从字符串构造文件路径。

关于python - 使用 Tkinter 创建一个 GUI,用于创建文件夹并解压 ZIP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36104872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com