C4D GUI編程入門

CreateLayout()中指定Python對(duì)話框的布局。C4D打開對(duì)話框時(shí)就會(huì)調(diào)用此函數(shù),繼承類中要重載此函數(shù)。下面是兩種設(shè)置布局的方法:

布局文件

推薦的方法是用布局文件,C4D內(nèi)部就是這么弄得。CreateLayout()就很簡(jiǎn)單了:

def CreateLayout(self):return self.LoadDialogResource(MY_DIALOG)

關(guān)鍵是MY_DIALOG 對(duì)應(yīng)于res/dialogs目錄下MY_DIALOG.res文件中的常量(請(qǐng)查看目錄結(jié)構(gòu)章節(jié))。文件如下:

DIALOG MY_DIALOG
{
    NAME DIALOG_TITLE;
    GROUP
    {
      COLUMNS 1;
      SPACE 4,4;
      BORDERSIZE 4,4,4,4;
      STATICTEXT { NAME HELLO_WORLD; }
    }
}

用這樣的窗口有幾個(gè)好處。很容易編輯對(duì)話框的布局,內(nèi)部支持也很好。上面NAME字段并未直接指定字符串。而是指向了strings_us/dialogs目錄下的MY_DIALOG.str中的字符串。

DIALOGSTRINGS MY_DIALOG
{
    DIALOG_TITLE "My Dialog";
    HELLO_WORLD "Hello World!";
}

如果想支持德語(yǔ),直接將string_us文件夾拷貝一份重命名成string_de,并修改里面的字段。

DIALOGSTRINGS MY_DIALOG
{
    DIALOG_TITLE "Mein Dialog";
    HELLO_WORLD "Hallo Welt!";
}

字符文件是utf8格式的,支持大部分的語(yǔ)言。unipad編輯unicode文件很好用,可以試下。只支持英文的話,編輯器就無(wú)所謂了。c4d加載插件后會(huì)讀取你自定義的文件。

GeDialog 類

如果不想用資源文件定義對(duì)話框,也可以使用GeDialog類中的方法直接來(lái)。命令創(chuàng)建界面的CreateLayout()如下:

def CreateLayout(self):
    self.SetTitle("My Dialog")
    self.GroupBegin(id=100010,flags=0,cols=1,rows=1)
        self.AddGroupSpace(4,4)
        self.AddGroupBorderSpace(4,4,4,4)
        self.AddStaticText(id=100011,flags=0,name="Hello World!")
    self.GroupEnd()

注意,現(xiàn)在沒(méi)法子進(jìn)行多語(yǔ)言支持了,除非你手動(dòng)編碼并使用GeLoadString()加載

菜單

唯一不能使用資源的位置是菜單。也要在CreateLayout()中使用GeDialog中的方法來(lái)創(chuàng)建

def CreateLayout(self):
    self.MenuFlushAll()
    self.MenuSubBegin("My Menu")
    self.MenuAddString(MY_ITEM,"My Item")
    self.MenuSubEnd()
    self.MenuFinished()#...

上面的代碼想國(guó)際化,就用下面的方法:

self.MenuAddString(MY_ITEM,plugins.GeLoadString(MY_ITEM_STRING))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容