使用PythonTkinter 2.7在选定的路径中创建目录

2024-03-28 14:56:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在TkinterPython2.7中创建一个类,该类使用用户在从filedialog中选择目录位置后在字段中引入的名称创建一个新目录。 作为一个例子,我想要这样的东西:

用户引入目录名,应创建以下结构:

$HOME\a\<name_introduced_by_the_user_in_the_field>\b 

$HOME\a\<name_introduced_by_the_user_in_the_field>\c

我想从simple开始创建一个简单的目录,但是我得到了一个错误。在

以下是我尝试过的:

^{pr2}$

错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 1470, in __call__
    return self.func(*args)
  File "program.py", line 118, in create_dir
    call(["mkdir",self.projectnamevar.get()])
AttributeError: PageThree instance has no attribute 'projectnamevar'

我怎样才能完成所有的事情?在

p.S.我对编程很陌生


Tags: the用户nameinpy目录fieldhome
2条回答

在类中找不到变量projectnamevar,因为尚未将其保存为该变量,请使用

self.projectnamevar = tk.StringVar()

另外,您可能希望使用操作系统模块而不是在系统上调用它,您可以这样使用它

^{pr2}$
import os, sys
if sys.version_info[0] == 3:
    from tkinter import *
    from tkinter import messagebox
    from tkinter import filedialog
    from tkinter.ttk import *
elif sys.version_info[0] == 2:
    print ("The Script is written for Python 3.6.4 might give issues with python 2.7, let the author know")
    print ("Note Python 2.7 CSV has a empty line between each result. couldn't find a fix for that")
    from Tkinter import *
    import tkMessageBox as messagebox
    import tkFileDialog as filedialog
    from ttk import Combobox

class temp:
    def __init__(self):
        self.top = Tk()
        self.lab = Label(self.top, text='UserFiled')
        self.en = Entry(self.top, width =25)
        self.but = Button(self.top, text='Submit',command = self.chooseFolder)
        self.lab.grid(row=0, column=0)
        self.en.grid(row=0, column=1)
        self.but.grid(row=0, column=2)
        self.top.mainloop()
    def chooseFolder(self):
        directory = filedialog.askdirectory()
        print(directory)
        newPath = os.path.join(directory, self.en.get())
        if not os.path.exists(newPath):
            os.chdir(directory)
            os.mkdir(self.en.get())

obj = temp()

相关问题 更多 >