Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2017 02:11:52

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

Для личных целей хотел создать аналог Total Сommander
1) Для этого на сколько я понял нужны библиотеки
1.1) tkinter
1.2) OS
1.3) ftplib
2) Первоочередная цель это сделать листиг каталогов
3) Сделать возможность создавать и удалять файлы ,а так же переход по каталогам

Прошу помочь возможно есть уже готовые библиотеки либо наработки

Офлайн

#2 Окт. 23, 2017 09:28:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

VIRTOK
Прошу помочь
Первое что нужно это составить техническое задание. Если вам нужен total commander возьмите total commander. Проведите сравнение с аналогами (far midhight commander и т.п.)

Второе. Наврядли вы найдете серьезные наработки для Tk. Лучше сразу ориентироваться на Qt, wxPython, pygtk. Я лично предпочитаю wxpython, но учитывайте что GUI я практически не занимаюсь.
3 возможно имеет смысл состряпать такую штуку но для броузинга содержимого файлов типа hdf5 То что имеется (hdfview) не позволяет осуществлять быстрый поиск элемента по имени. Неудобно делать перемещение и копирование элементов. Имеющиеся графики нельзя зумить. Невозможно подключать плагины для каастомизации просмотра. Ну и наконец надо ставить jre… В качестве глобальной идеи можно еще предложить замену callback механизмов (сигналов слотов в Qt) На появившиеся в питоне 3.5 async/await. Интересно что из этого выйдет. Аналогов в C++ пока нет поскольку там async/await тоже только наклевывается.



Отредактировано doza_and (Окт. 23, 2017 09:29:47)

Офлайн

#3 Окт. 23, 2017 09:35:55

kins
Зарегистрирован: 2012-08-22
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

Офлайн

#4 Окт. 23, 2017 11:04:20

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander



Цель :
1)Понять основные принцы работы с библиотеками :
1.1) tkinter
1.2) os
2)Разработка будет вестись под OS Windows
3)Изучить принципы работы модулей в python

—————————————————————————————————————————–
1)Сделать листинг каталогов ,этого нужно приметь функцию типа

 import os
for root, dirs, files in os.walk(".", topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name)) 

2)Сделать вкладки
3)Сделать возможность запускать файлы из текущего каталога
4) Добавить кнопки для вызова программ (для начала CMD)


Отредактировано VIRTOK (Окт. 23, 2017 11:27:55)

Офлайн

#5 Окт. 23, 2017 11:20:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

VIRTOK
Что вам надо-то конкретно? Вы хотите, чтобы за вас сделали, что ли?



Офлайн

#6 Окт. 23, 2017 11:30:19

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

Хочу что бы мне помогли сделать листинг каталогов
Функцию я нашел тетерь надо ее к ТК прикрутить

Офлайн

#7 Окт. 23, 2017 13:19:55

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

VIRTOK
Функцию я нашел тетерь надо ее к ТК прикрутить
что значит “к ТК прикрутить”?
Вот допустим склепал на коленке за пять минут, используя подсказки из стековерфлова:
 import os
from tkinter import *
from tkinter import ttk
path = 'd:\\tmp\\' # путь к "текущей папке"
def do_on_file_dbl_click(event):  # что делаем при дабл клике на файле
    l = event.widget
    print('selected:', l.get(l.curselection()))
root = Tk()
l = Listbox(root, height=5)   # Листбокс куда помещаем список файлов и папок
l.grid(column=0, row=0, sticky=(N,W,E,S))
s = ttk.Scrollbar(root, orient=VERTICAL, command=l.yview)
s.grid(column=1, row=0, sticky=(N,S))
l['yscrollcommand'] = s.set
l.bind("<Double-1>", do_on_file_dbl_click)
ttk.Sizegrip().grid(column=1, row=1, sticky=(S,E))
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
for filename in os.listdir(path):  # заполняем листбокс фацйлами и папками
    l.insert(END, filename)
root.mainloop()
такой вариант вас устроит?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 23, 2017 13:22:43)

Офлайн

#8 Окт. 23, 2017 16:10:05

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

Спасибо PEHDOM мне он подходит

такой вариант вас устроит?
Теперь бы внедрить это в мой код , то у меня не получается
Было бы замечательно ели бы вы сказали что нужно почитать что бы поднять свой уровень.
 from tkinter import *
def new_win():
    win = Toplevel(root)
    win.geometry('1000x700+200+200')
    lable1 = Label(win, text="новое окно",font=20)
    lable1.pack()
def exit_app():
    root.destroy()
root = Tk()
root.geometry('1200x720+200+200')# задаем размер главного окна и его расположение
main_menu = Menu(root)
root.configure(menu=main_menu)
first_item = Menu(main_menu, tearoff=0)
main_menu.add_cascade(label="Файл", menu=first_item)
first_item.add_command(label="Новый", command=new_win)
first_item.add_command(label="Выход", command=exit_app)
second_item = Menu(main_menu, tearoff=0)
main_menu.add_cascade(label="Правка", menu=second_item)
second_item.add_command(label="item1")
second_item.add_command(label="item2")
root.mainloop()

Офлайн

#9 Окт. 23, 2017 17:42:14

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

VIRTOK
Теперь бы внедрить это в мой код , то у меня не получается
Дак и не получиться просто копипастом внедрить, это всеголишь пример как можно сделать, с общим принципом работы.
А у вас и кода как такового нет.
Поскольку предполагается “двухпанельниый файловый менеджер”, то и панелей должно быть две. Дабы измежать лишней копипасты создайте для начала класс панели.
Подумайте какие в нем должны быть атрибуты и методы. Очевидно что панель должна помнить текущую отображаемую директорию, а также должен быть метод смены директории, при вызове которого, все содержимое панели обновляеться. Плюс , если делаем панель на основе листбоса, то должен быть метод который отвечает за клик мышкой по элементу списка. Если это папка, то мы должны проваливаться в нее, если файл, то фалй должен открываться в соответвующем приложении или хотябы писаться в консоли “открываем файл такойто..”, в качестве заглушки.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#10 Окт. 23, 2017 18:08:15

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание аналога Total Сommander

Спасибо PEHDOM буду колдовать дальше.
Надо писать тех задание для для того чтобы понять что нужно сделать. Сейчас в голове одни непнонятки.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version