2016-05-16 30 views
0

我正在爲使用Python的Blender創建一個插件,需要用戶進行一些確認。 我已經做了這樣一個用於Windows的工作代碼,東西:Linux中的消息框(開箱即用)

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上,我更喜歡使用一個解決方案,不需要以前安裝包。

某人colud建議Linux(或跨平臺)解決方案?

謝謝

+0

https://en.wikipedia.org/wiki/Zenity從bash腳本的[設置子 –

+0

可能重複調用它](http://stackoverflow.com/questions/8354482/dialog-from-bash-script)(閱讀所有的答案)。 –

+0

正如我已經寫道,我正在尋找一個解決方案,不需要以前安裝包。 –

回答

1

攪拌機的默認安裝不包括python的整個默認構建。打包混合器版本進行分發時,不包括python模塊(包括tkinter)的列表。你可以找到確切的清單here。您可能會對this example中使用的某些窗口管理器方法(如invoke_props_dialog)感興趣,但通常這些方法不適用於您應該使用的方式。

有兩種常見的方法可以從用戶獲取變量輸入。第一個屬性可以由用戶根據自己的選擇進行調整,然後在腳本運行時使用。另一種方式是通過運營商屬性。

屬性可以be added某些現有的類別,並顯示在panels供用戶編輯。

在攪拌器中執行的操作(例如,當用戶按下某些鍵,單擊按鈕或選擇菜單項時)由操作員執行。操作員擁有改變其操作結果的屬性是很常見的。例如,當您添加UV球體並按F6時,您可以調整球體的幾何形狀以及其大小和位置。這些屬性也可以在toolshelf區域的底部找到。

uvsphere options

this example所示,可以將屬性添加到您的運營商級和這些屬性可以由用戶一樣在紫外線球例子來進行調整。您還可以指定值,當你把一個按鈕,用於用戶單擊 -

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