簡體   English   中英

OS.rename()無法與tkinter一起使用

[英]OS.rename() not working with tkinter

伙計們,我正在嘗試制作一個在一個條目中獲取用戶路徑和文件名,在另一個條目中獲取用戶名和文件名的工具,我的目的是使用os.rename(oldname, newname)重命名給定文件,但是丟給我一些錯誤。

我的密碼

from tkinter import *
import os

def Rename_Function(*args):
    os.rename(oldname2,newname)
    oldname.set(oldname)#"Renamed Successfully !!! ")


root = Tk()
root.title("MyPython App")
root.geometry("250x250+100+50")

oldname = StringVar()
oldname2= StringVar()
newname= StringVar()
Title1 = Label(root,text="FileName (with path):")
Title1.grid(row=0, column=0)
Oldfilename = Entry(root, textvariable=oldname2)
Oldfilename.grid(row=0, column=1)
Title2 = Label(root, text="New Filename:")
Title2.grid(row=1, column=0)
Newfilename = Entry(root, textvariable=newname)
Newfilename.grid(row=1, column=1)
RenameButton = Button(root, text="RENAME MY FILE", command=Rename_Function)
RenameButton.grid(row=3,columnspan=2, sticky="NWES")
FinalOutput = Label(textvariable=oldname)
FinalOutput.grid(row=4, columnspan=2, sticky = "NWES")
root.mainloop()

這是該工具的外觀

在此處輸入圖片說明

單擊按鈕時出現上述錯誤,有人可以指導我如何使其正常工作。

我懷疑os.rename()函數是否應該以其他方式訪問,因為它是另一個模塊的函數。 因為我是學習者,所以我不知道如何有效地使用它們。 請指導我並向我解釋,以便我更好地理解這個概念。

擴展@SuperSaiyan在評論中所說的內容。

您正在使用StringVar ,該方法具有可用的.get()方法。 當您傳遞設置為此stringvar的變量時,您只是將引用傳遞給該對象。 您實際上需要使用.get()方法來獲取字符串。

例如oldname2.get()

另外,對於選擇路徑,您可以只使用filedialog,然后使用os.path.splitext獲取重命名小部件中的基本路徑+條目,以用作os.rename的第二個參數

您正在使用StringVar ,而rename需要字符串。 使用oldname.get()

import tkinter as tk
import os

def rename(oldname, oldname2, newname):
    os.rename(oldname2.get(),newname.get())
    oldname.set("Renamed Successfully !!! ")

def main():
    root = tk.Tk()
    root.title("MyPython App")
    root.geometry("250x250+100+50")
    oldname = tk.StringVar()
    oldname2= tk.StringVar()
    newname= tk.StringVar()
    tk.Label(root, text="FileName (with path):").grid(row=0, column=0)
    tk.Entry(root, textvariable=oldname2).grid(row=0, column=1)
    tk.Label(root, text="New Filename:").grid(row=1, column=0)
    tk.Entry(root, textvariable=newname).grid(row=1, column=1)
    tk.Button(root, text="RENAME MY FILE", command=lambda: rename(oldname, oldname2, newname)).grid(row=3,columnspan=2, sticky="NWES")
    tk.Label(textvariable=oldname).grid(row=4, columnspan=2, sticky = "NWES")
    root.mainloop()

if __name__ == '__main__':
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM