Python вопросы

Список разделов Blender 3D Плагины

Описание: Обсуждение расширений для Blender
Модератор: exooman

Сообщение #61 Pavel » 21.11.2018, 23:08

Мне нужно всё таки такое дерево. Чтобы все файлы было видно из всех раскрытых папок.

Добавлено спустя 1 минуту 52 секунды:
А может готовые решения кто-нибудь встречал? Только Total Commander не вариант. Там нету такого.

Добавлено спустя 10 минут 56 секунд:
Я начал делать такое дерево, но много чего не получается, используя tkinter. Как можно построить интерфейс, не используя tkinter? Нужно из Windows Api вызывать функции? А то не знаю, как привязать событие при нажатии на определённый элемент дерева. И не знаю, как иконки добавить. И много чего ещё нельзя сделать в tkinter.
Изображение
Pavel M
Аватара
Сообщения: 879

Сообщение #62 Korchy » 21.11.2018, 23:34

Для всяких окошек на питоне есть QT.
Но чем так не устраивает ТС? Мне его хватает с лихвой. Есть еще far в нем куча функций и куча плагинов и можно свои плагины под него делать.
Korchy M
Аватара
Сообщения: 2556



  • 1

Сообщение #63 nautilus » 21.11.2018, 23:42

вики пишет, шо аналог баобаба - некий WinDirStat
nautilus
Аватара
Откуда: Украина, Хмельницкий
Сообщения: 841

Сообщение #64 wolfram » 21.11.2018, 23:46

Места на ЖД не хватает
для такого случая есть куча софтинок, которые отображают файлы и папки раздела областями, чем жирнее файл тем больше область
https://alternativeto.net/software/windirstat/
wolfram M
Аватара
Сообщения: 43

Сообщение #65 Pavel » 22.11.2018, 00:03

Вопрос закрыт. WinDirStat то, что нужно.
Pavel M
Аватара
Сообщения: 879

Сообщение #66 Ksaan » 21.01.2019, 13:28

Нужна помощь, не могу понять почему произвольно перезаписывается массив с координатами положения объектов?
Спойлер
Код: Выделить всё
import bpy

#=================== outliner ==============================================================
output = bpy.context.blend_data.texts.get("output", None)
if not output:
    output = bpy.context.blend_data.texts.new("output")
   
#print("Mesage", file=output) #<--------------<<<<

obj = bpy.context.object
       
activ_obj = bpy.context.active_object
       
array_pose = []
array_rotate = []
       
for obj in bpy.context.selected_objects:
           
    if (obj.name != activ_obj.name):
        array_pose.append(obj.location)
        array_rotate.append(obj.rotation_euler)
    else:
        obj.select=False
               
bpy.ops.object.delete()
               
print(array_pose, file=output) #<--------------<<<<

for i in range(len(array_pose)):
    bpy.context.scene.objects.active = activ_obj
    activ_obj.select =  True

    bpy.ops.object.duplicate(linked=True)
               
    bpy.context.active_object.location = array_pose[i]
    bpy.context.active_object.rotation_euler = array_rotate[i]
           
    bpy.context.active_object.select = False
           
print(array_pose, file=output) #<--------------<<<<
       
bpy.context.scene.objects.active = activ_obj #
activ_obj.select =  True
Я не новичок в программирований, но в API Blendera залез в первые. Скрипт должен заменять выделенные объекты на активный с привязкой (ALT + D). В первом цикле мы записываем в массив координаты, а во-втором копировать активный объект и перемещать его в координаты из массива. Но в место этого после копирования переписывается сам массив с координатами почему?
Ksaan
Аватара
Сообщения: 22

  • 1

Сообщение #67 Pavel » 21.01.2019, 15:30

Ksaan, попробуй преобразовать obj.location в tuple, прежде чем его добавлять к списку array_pose.
Вот я исправил твой скрипт:
Код: Выделить всё
import bpy


activ_obj = bpy.context.active_object

array_pose = []
array_rotate = []

for obj in bpy.context.selected_objects:
    if (obj.name != activ_obj.name):
        array_pose.append(tuple(obj.location))
        array_rotate.append(tuple(obj.rotation_euler))
    else:
        obj.select=False

bpy.ops.object.delete()

for i in range(len(array_pose)):
    bpy.context.scene.objects.active = activ_obj
    activ_obj.select =  True

    bpy.ops.object.duplicate(linked=True)

    bpy.context.active_object.location = array_pose[i]
    bpy.context.active_object.rotation_euler = array_rotate[i]

    bpy.context.active_object.select = False

bpy.context.scene.objects.active = activ_obj
activ_obj.select =  True

Я подозреваю, что значения списка array_pose изменяются, так как ты удаляешь объекты. А значения позиции ссылались на эти объекты, которые ты удалил.
Pavel M
Аватара
Сообщения: 879

Сообщение #68 Ksaan » 21.01.2019, 16:00

Благодарю все заработало. И да с твоим пояснением я более или менее понял что да как. Хотя так и не понятно почему массив именно перезаписывался а не удалялся.
Ksaan
Аватара
Сообщения: 22

Сообщение #69 Pavel » 04.02.2019, 22:42

Как на питоне узнать цвета пикселей в PNG файле?
Нужно прочитать чанки IHDR и IDAT. Но чанк IDAT сжать по алгоритму deflate. Чем его расжать? zlib? Мне просто не хочется использовать PIL, чтобы в аддоне не было лишних зависимостей.
Pavel M
Аватара
Сообщения: 879

Сообщение #70 andreymal » 05.02.2019, 01:53

pypng? Основной код в одном .py файле
Читая эту подпись, вы впустую потратили 5 секунд своей жизни.
andreymal M
Аватара
Сообщения: 1154

Сообщение #71 Pavel » 05.02.2019, 11:01

Я уже нашёл решение. Просто загрузил изображение в блендер с помощью bpy.data.images.load, скопировал пиксели, потом удалил изображение из сцены.
Pavel M
Аватара
Сообщения: 879

Сообщение #72 Pavel » 30.05.2019, 13:18

Я написал скрипт, который отображает нажатие некоторых клавиш. Но проблема в том, что клавиши отображаются только тогда, когда окно активно. Как сделать так, чтобы клавиши перехватывались с неактивного окна?:

Код: Выделить всё
import tkinter


def screencast(event):
    print(dir(event))
    label.configure(text=event.char)


root = tkinter.Tk()
root.title('')
label = tkinter.Label(root, font='Arial 32', fg='white')
label['bg'] = 'black'
label.grid()
root.bind_all('<Key>', screencast)
root.wm_attributes('-toolwindow', True)
root.wm_attributes('-alpha', 0.25)
root.wm_attributes('-topmost', True)
root.geometry("150x450")
root['bg'] = 'black'
root.mainloop()
Pavel M
Аватара
Сообщения: 879

Пред.

Вернуться в Плагины

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 4 гостя

cron