os 重命名和列表框回调

os rename and listbox callback

此应用程序的目的是将每个文件 1 重命名为特定编号,然后打开一个新的 window,我希望代码在用户选择的文件开头添加一个星号

from tkinter import *
from typing import Collection
import os
 


root = Tk()
root.geometry("500x200+700+300")

label1 = Label(text="Add directory")
label1.place(x=100,y=20)

entry1 = Entry()
entry1.place(x=300 ,y=20)

label2 = Label(text="enter the name")
label2.place(x=100 ,y=50)

entry2 = Entry()
entry2.place(x=300 ,y=50)

label3 = Label(text="enter the extention")
label3.place(x=100 ,y=80)

entry3 = Entry()
entry3.place(x=300 ,y=80)


directory = entry1.get()
name = entry2.get()
extention = entry3.get()

def main():

    directory = entry1.get()
    name = entry2.get()
    extention = entry3.get()
    folder = directory
    listbox_entries = [os.listdir(folder)]
    
    for count, filename in enumerate(os.listdir(folder)):
        dst = f"{name} {str(count)} {extention}"
        src =f"{folder}/{filename}"  
        dst =f"{folder}/{dst}"
         
        os.rename(src, dst)

btn2 = Button(text="rename",command=main,font="arial 22 bold")
btn2.place(x=150 ,y=120,width=200,height=40)


class Frames(object):
 
    def newWindow(): 
        newwin = Toplevel(root)
        newwin.title('New Window')
        newwin.geometry("200x500") 
        newwin.resizable(0, 0)
        labe = Label(newwin,text="Add directory")
        labe.pack()

        entr = Entry(newwin)
        entr.pack()
        def get():
            folder = entr.get()
            f = os.listdir(folder)
            liste = Listbox(newwin)
            for i in f:
                liste.insert(END,i)
            liste.pack()
            def fav():
                def callback(event):
                    aaa = event.widget.curselection()
                    os.rename(aaa,f"✰{aaa}")


            btn55 = Button(newwin,text="FAVORİTE",command=fav)
            btn55.pack()

        btn4 = Button(newwin,text="0",command=get)
        btn4.pack()


    
    def mainFrame(root):
        root.title('Open New Window!!!')
        root.geometry("200x200") 
        root.resizable(0, 0)
    button1 =Button(root, text ="✰", command =newWindow)
    button1.place(x = 30, y = 150, width=25, height=25)


root.mainloop()

我遇到的问题是在第 74 行,它没有给出任何错误或任何输入,它基本上什么都不做。正如我上面提到的,我希望它在文件名的开头添加一个星号.

class Frames 已定义,但未在任何地方定义 called/instantiated。

def mainFrame(root) 和后面的 button1 需要缩减到 class Frames 范围之外(我认为)。此函数也不会被任何东西调用。

建议在 button1 之前将 Frames 的实例创建到变量中 variable = Franes() 并在 button1.

中使用 command=variable.newWindow

最好在class Frames中有一个启动函数,即def __init__():,这样在调用时就创建了一个实例。然后 Frames 中的每个函数都变成了 class 属性,并且可以通过这种方式访问​​。

建议在 Python 文档中学习 classscope