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

Прошу помочь возможно есть уже готовые библиотеки либо наработки
doza_and
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 тоже только наклевывается.
kins
https://ru.wikipedia.org/wiki/Sunflower
VIRTOK


Цель :
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)


FishHook
VIRTOK
Что вам надо-то конкретно? Вы хотите, чтобы за вас сделали, что ли?
VIRTOK
Хочу что бы мне помогли сделать листинг каталогов
Функцию я нашел тетерь надо ее к ТК прикрутить
PEHDOM
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()
такой вариант вас устроит?
VIRTOK
Спасибо 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()
PEHDOM
VIRTOK
Теперь бы внедрить это в мой код , то у меня не получается
Дак и не получиться просто копипастом внедрить, это всеголишь пример как можно сделать, с общим принципом работы.
А у вас и кода как такового нет.
Поскольку предполагается “двухпанельниый файловый менеджер”, то и панелей должно быть две. Дабы измежать лишней копипасты создайте для начала класс панели.
Подумайте какие в нем должны быть атрибуты и методы. Очевидно что панель должна помнить текущую отображаемую директорию, а также должен быть метод смены директории, при вызове которого, все содержимое панели обновляеться. Плюс , если делаем панель на основе листбоса, то должен быть метод который отвечает за клик мышкой по элементу списка. Если это папка, то мы должны проваливаться в нее, если файл, то фалй должен открываться в соответвующем приложении или хотябы писаться в консоли “открываем файл такойто..”, в качестве заглушки.
VIRTOK
Спасибо PEHDOM буду колдовать дальше.
Надо писать тех задание для для того чтобы понять что нужно сделать. Сейчас в голове одни непнонятки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB