Kotak pesan di Linux (di luar kotak)

Saya sedang mengerjakan addon untuk Blender menggunakan Python yang perlu meminta konfirmasi dari pengguna. Saya sudah membuat kode yang berfungsi untuk Windows, kira-kira seperti ini:

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')

Sayangnya (dan tentu saja), ini tidak berfungsi di Linux. Saya membaca tentang menggunakan Tkinter bisa menjadi solusi tetapi belum diinstal di Linux dan saya lebih suka menggunakan solusi yang tidak perlu menginstal paket sebelumnya.

Seseorang dapat menyarankan solusi Linux (atau lintas platform)?

Terima kasih


person Loki    schedule 16.05.2016    source sumber
comment
en.wikipedia.org/wiki/Zenity sebut saja dengan subproses   -  person Padraic Cunningham    schedule 16.05.2016
comment
Kemungkinan duplikat Dialog dari skrip bash (baca semua jawabannya).   -  person n. 1.8e9-where's-my-share m.    schedule 16.05.2016
comment
Seperti yang sudah saya tulis, saya mencari solusi yang tidak perlu menginstal paket sebelumnya.   -  person Loki    schedule 16.05.2016


Jawaban (1)


Penginstalan default blender tidak menyertakan seluruh build default python. Daftar modul python (termasuk tkinter) dikecualikan saat mengemas versi blender untuk didistribusikan. Anda dapat menemukan daftar persisnya di sini . Anda mungkin tertarik dengan beberapa metode pengelola jendela yang tersedia seperti invoke_props_dialog yang digunakan di contoh ini, namun secara umum ini bukan cara yang harus Anda lakukan.

Ada dua cara umum untuk mendapatkan masukan variabel dari pengguna. Yang pertama adalah properti yang dapat disesuaikan oleh pengguna sesuai pilihannya, yang kemudian digunakan saat skrip Anda dijalankan. Cara lainnya adalah melalui properti operator.

Properti dapat ditambahkan ke beberapa properti kelas yang ada dan ditampilkan di panel untuk diedit oleh pengguna.

Tindakan yang dilakukan dalam blender seperti ketika pengguna menekan beberapa tombol, mengklik tombol atau memilih item menu, dilakukan oleh operator. Merupakan hal yang umum bagi seorang operator untuk memiliki properti yang mengubah hasil tindakannya. Misalnya ketika Anda menambahkan Bola UV dan menekan F6 Anda dapat menyesuaikan seberapa besar geometri bola serta ukuran dan lokasinya. Properti ini juga tersedia di bagian bawah wilayah rak alat.

opsi uvsphere

Seperti yang ditunjukkan dalam contoh ini, Anda dapat tambahkan properti ke kelas operator Anda dan properti ini dapat disesuaikan oleh pengguna sama seperti pada contoh UV Sphere. Anda juga dapat menentukan nilai yang akan digunakan saat Anda menempatkan tombol untuk diklik pengguna -

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