Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.06.2021
Сообщений: 6
1

Проводник на python #4

23.07.2021, 16:16. Показов 545. Ответов 0

Author24 — интернет-сервис помощи студентам
Доброго времени суток, и у меня проблема которую я опять не могу решить



В общем, когда на какой-либо файл\папку нажимают ПКМ два раза, открывается меню, в котором находятся элементы для работы с элементами. Удалять элементы могу, а вот с переименованием застрял. Я из одной функции(def functions) передаю значение в другую функцию(def rename), а именно - новое имя для элемента. Почти во всех функциях объявлены глобальные переменные, чтобы их можно было использовать и изменять в других частях программы. У меня их три(L,plist,newPath) [код ниже]. Я хотел сделать и четвертую, но программа сказала нет )). В итоге я решил не делать глоб. переменную и просто передать значение в функцию, но опять пошли ошибки


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
from tkinter import *
import os
import shutil
 
global L,plist,newPath
 
def updateMouseButton(event):
    global L,plist,newPath
    index=MAIN.curselection()[0]#смотрит какой элемент выбран
    name=L[index]#узнает имя выбранного элемента по индексу
    path=plist[-1]
    newPath=path+'\\'+name #создает новый путь с учетом прошлого элемента
    os.chdir(newPath)#меняет рабочий каталог
    plist.append(newPath)
    L.clear()#очищает список с папками
    L=os.listdir()#смотрит папки в папке
    size=MAIN.size()
    MAIN.delete(0,size)#удаляет все и listbox
    for i in L:
        MAIN.insert(END,i)#вставляет новые значения в listbox
    label['text']=newPath
    print('forward')
    return newPath
 
 
def updateProgramButton():
    global L,plist,newPath
    index=MAIN.curselection()[0]#смотрит какой элемент выбран
    name=L[index]#узнает имя выбранного элемента по индексу
 
    path=plist[-1]
    newPath=path+'\\'+name #создает новый путь с учетом прошлого элемента
    os.chdir(newPath)#меняет рабочий каталог
    plist.append(newPath)
    L.clear()#очищает список с папками
    L=os.listdir()#смотрит папки в папке
    size=MAIN.size()
    MAIN.delete(0,size)#удаляет все и listbox
    for i in L:
        MAIN.insert(END,i)#вставляет новые значения в listbox
    label['text']=newPath
    print('forward')
 
 
def back():
    global L,plist
    if len(plist)==1:
        newPath=plist[-1]
    else:
        newPath=plist.pop()
        newPath=plist[-1]
    os.chdir(newPath)#меняет рабочий каталог
    L.clear()#очищает список с папками
    L=os.listdir()#смотрит папки в папке
    size=MAIN.size()
    MAIN.delete(0,size)#удаляет все и listbox
    for i in L:
        MAIN.insert(END,i)#вставляет новые значения в listbox
    label['text']=newPath
    print('back')
 
def OpenFile():
    global newPath,L
    index=MAIN.curselection()[0]
    name=L[index]
    os.startfile(newPath+'\\'+name)
    print('opened')
 
 
def Delete():
    global newPath,L
    index=MAIN.curselection()[0]#смотрит какой элемент выбран
    print(newPath)
    name=L[index]#узнает имя выбранного элемента по индексу
    print(newPath)
    f=os.path.isfile(newPath+'\\'+name)
    d=os.path.isdir(newPath)
    if f==False:
        if len(os.listdir(newPath))==0:
            os.rmdir(newPath+'\\'+name)
        else:
            shutil.rmtree(newPath+'\\'+name)
            print('folder deleted')
            L=os.listdir()
            size=MAIN.size()
            MAIN.delete(0,size)
            for i in L:
                MAIN.insert(END,i)
    elif f==True:
        os.remove(newPath+'\\'+name)
        print('file deleted')
        L.clear()
        L=os.listdir()
        size=MAIN.size()
        MAIN.delete(0,size)
        for i in L:
            MAIN.insert(END,i)
 
def Functions(event):
    FuncWindow=Toplevel(root)
    FuncWindow.geometry('225x100')
    x=root.winfo_rootx()
    y=root.winfo_rooty()
    FuncWindow.wm_geometry("+%d+%d" % (x+650, y))
    button0=Button(FuncWindow,text='Создать',)
    button0.place(x=15,y=0)
    button1=Button(FuncWindow,text='Удалить',command=Delete)
    button1.place(x=15,y=30)
    entry=Entry(FuncWindow)
    entry.place(x=115,y=60,width=90,height=26)
    n=entry.get()
    Rename(n)
    button2=Button(FuncWindow,text='Переименовать',font='Arial 8',command=Rename(n))
    button2.place(x=15,y=60)
 
 
def Rename(n):
    global L,newPath
    index=MAIN.curselection()[0]
    name=L[index]
 
    print(n,'a')
    os.rename(newPath+'\\'+name,newPath+'\\'+n)
    print('renamed')
    L.clear()
    L=os.listdir()
    size=MAIN.size()
    MAIN.delete(0,size)
    for i in L:
        MAIN.insert(END,i)
 
root=Tk()
root.geometry('600x500')
x=(root.winfo_screenwidth() - root.winfo_reqwidth())/2.5
y=(root.winfo_screenheight() - root.winfo_reqheight())/2.5
root.wm_geometry("+%d+%d" % (x, y))
 
MAIN=Listbox(root,selectmode=EXTENDED)
 
scrollMAIN=Scrollbar(root,command=MAIN.yview)
MAIN.configure(yscrollcommand=scrollMAIN.set)
MAIN.place(x=0,y=50,height=450,width=600)
scrollMAIN.pack(side=RIGHT,fill=Y)
 
MAIN.bind('<Double-Button-1>',updateMouseButton)
MAIN.bind('<Double-Button-3>',Functions)
 
button1=Button(root,text='Вперёд',command=updateProgramButton)
button1.place(x=45,y=20)
 
button2=Button(root,text='Назад',command=back)
button2.place(x=0,y=20)
 
button3=Button(root,text='Открыть(файл)',font='Arial 8',command=OpenFile)
button3.place(x=490,y=20)
 
 
label=Label(root,bg='white')
label.place(x=100,y=20,height=26,width=220)
 
path='D:'
os.chdir('D:\\') #работаем с диском d
L=os.listdir()#смотрит папки на диске
 
plist=["d:\\"]
 
for i in L:
    MAIN.insert(END,i)
 
root.mainloop()



проблема возникает здесь



Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def Functions(event):
    FuncWindow=Toplevel(root)
    FuncWindow.geometry('225x100')
    x=root.winfo_rootx()
    y=root.winfo_rooty()
    FuncWindow.wm_geometry("+%d+%d" % (x+650, y))
    button0=Button(FuncWindow,text='Создать',)
    button0.place(x=15,y=0)
    button1=Button(FuncWindow,text='Удалить',command=Delete)
    button1.place(x=15,y=30)
    entry=Entry(FuncWindow)
    entry.place(x=115,y=60,width=90,height=26)
    n=entry.get()
    Rename(n)
    button2=Button(FuncWindow,text='Переименовать',font='Arial 8',command=Rename(n))
    button2.place(x=15,y=60)
 
 
def Rename(n):
    global L,newPath
    index=MAIN.curselection()[0]
    name=L[index]
 
    print(n,'a')
    os.rename(newPath+'\\'+name,newPath+'\\'+n)
    print('renamed')
    L.clear()
    L=os.listdir()
    size=MAIN.size()
    MAIN.delete(0,size)
    for i in L:
        MAIN.insert(END,i)



сам я считаю что здесь неправильно что-то элементарное, но моя невнимательность не дает мне найти ошибку))))





заранее спасибо....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2021, 16:16
Ответы с готовыми решениями:

Проводник на python[3]
в общем когда я нажимаю на папку, оно переходит в папку, но дальше не проходит, т.к оно не...

Как вызвать проводник в Python
Подскажите пожалуйста как заменить вот эту строку на выбор в проводнике. Только не сторонние...

Как открыть проводник Windows через кнопку программы, написанной на Python \ TKINTER?
У меня есть код, написанный на Питоне с помощью ткинтера. В программе, которую он запускает есть...

проводник
Добрый вечер. Подскажите,пожалуйста,как в окне вызвать проводник Windows,чтобы полистать папки...

проводник
здравствуйте!у меня widows 7 когда открываю какую либопрограмму открывается windows media plaer...

0
23.07.2021, 16:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2021, 16:16
Помогаю со студенческими работами здесь

проводник
Помогите пожалуйста! Мне нужно написать программу по типу FAR, NC, проводник, по переходу по...

проводник
Как сделать, нужно чтобы в переменную передавалось имя файла в папке с проектом, при открытии...

Проводник в С#
Здравствуйте, появилось такое задание а я даже незнаю с чего бы начать и как реализовать...(нужно...

Проводник
Привет, в общем я тут пытаюсь написать проводник на c# и наткнулся на ошибку &quot;имя dir не существует...

Проводник
Есть listbox,нужно чтобы при нажатии на кнопку юзер выбрал путь и в listbox отобразились .mp3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru