Окно сообщений в Linux (из коробки)

Я работаю над аддоном для Blender с использованием Python, который должен запрашивать подтверждение у пользователя. Я уже сделал рабочий код для Windows, что-то вроде этого:

from ctypes import *

user32 = windll.user32
Answer = user32.MessageBoxW(None, 'some question here', 'title', 4 | 0x40)

if Answer==6:
    print('You choose YES')
else:
    print('You choose NO')

К сожалению (и очевидно), это не работает в Linux. Я читал, что Tkinter может быть решением, но он еще не установлен в Linux, и я предпочитаю использовать решение, которое не требует предварительной установки пакетов.

Кто-нибудь может предложить решение для Linux (или кросс-платформенное)?

Спасибо


person Loki    schedule 16.05.2016    source источник
comment
en.wikipedia.org/wiki/Zenity вызовите его с подпроцессом   -  person Padraic Cunningham    schedule 16.05.2016
comment
Возможный дубликат Диалог из сценария bash (прочитайте все ответы).   -  person n. 1.8e9-where's-my-share m.    schedule 16.05.2016
comment
Как я уже писал, я ищу решение, которое не требует предварительной установки пакетов.   -  person Loki    schedule 16.05.2016


Ответы (1)


Установка блендера по умолчанию не включает всю сборку python по умолчанию. Список модулей Python (включая tkinter) исключается при упаковке версии blender для распространения. Точный список можно найти здесь . Вас могут заинтересовать некоторые доступные методы оконного менеджера, такие как invoke_props_dialog, используемые в этот пример, но в целом это не тот путь, по которому вам следует идти.

Существует два распространенных способа получения переменных ввода от пользователя. Первое — это свойство, которое может быть изменено пользователем по своему выбору, а затем используется при запуске вашего скрипта. Другой способ — через свойства оператора.

Свойства могут быть добавлены к некоторым существующие классы и отображаются в панелях для редактирования пользователем.

Действия, которые выполняются в блендере, например, когда пользователь нажимает некоторые клавиши, щелкает кнопку или выбирает пункт меню, выполняются операторами. Обычно у оператора есть свойства, которые изменяют результат его действия. Например, когда вы добавляете UV-сферу и нажимаете F6, вы можете настроить геометрию сферы, а также ее размер и расположение. Эти свойства также доступны в нижней части панели инструментов.

параметры uvsphere

Как показано в этом примере, вы можете добавьте свойства в класс вашего оператора, и эти свойства могут быть настроены пользователем так же, как в примере UV Sphere. Вы также можете указать значения, которые будут использоваться, когда вы размещаете кнопку, которую пользователь будет нажимать —

def draw(self, context):
    row = self.layout.row()
    row.operator('object.example_operator', text='go with 6').choice = 6
person sambler    schedule 16.05.2016