2013-07-09 30 views
1

在像spinctrl或slider框這樣的小部件中,像inital位置,最小值和最大值等屬性可以設置爲常量。有什麼方法可以將它們指定爲變量。在wxFormBuilder中爲屬性使用變量而不是常量

所以代碼

self.HDSpin = wx.SpinCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 10, 0) 

成爲

self.HDSpin = wx.SpinCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, params.minv, params.maxv, params.defaultv) 

這將使參數在運行時設置顯示在對話框之前。

回答

0

作爲一種解決方法,在每個變量的位置輸入一個唯一編號:例如:123401,123402,123403等。創建「gui.py」自動生成文件後,運行帶sed的腳本來替換每個編號相應的變量。我使用相同的方法來確定默認字符串運行時間,而不是硬編碼。與strvar01,strvar02中的缺省字符串文本框

#!/bin/bash 

FILE="gui.py" 

sed -i 's/123401/HDMin/g' "$FILE" 
sed -i 's/123402/HDDefault/g' "$FILE" 
sed -i 's/123403/HDMax/g' "$FILE" 
sed -i 's/u"strvar01"/DefaultStr1/g' "$FILE" 

這樣的自動生成的代碼self.Label1 = wx.StaticText(..., u"strvar01", ...)

變爲:self.Label1 = wx.StaticText(...,DefaultStr1, ...)

其中DefaultStr1的值被設置在運行時

0

是的,只需像使用普通(非wxpython)python方法那樣使用變量即可。

+0

wxformbuilder只接受numers在屬性對話框中..目前我給他們常量一些具體的數字爲每個變量..例如'X'爲'12301'。 'y'作爲'12302'等。然後我使用帶sed的bash腳本將變量添加到自動生成的文件中。 – staticd

+0

在這種情況下,它是wxformbuilder的一個限制,你將不得不改變它吐出的代碼或者向他們添加到它的功能的開發者發出一個請求。 – Yoriz