【问题标题】:Using a variable instead of constants for properties in wxFormBuilder在 wxFormBuilder 中为属性使用变量而不是常量
【发布时间】:2013-07-09 06:50:55
【问题描述】:

在像 spinctrl 或滑块框这样的小部件中,初始位置、最小值和最大值等属性可以设置为常量。有什么方法可以将它们指定为变量。

所以代码

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 )

这将允许在显示对话框之前在运行时设置参数。

【问题讨论】:

    标签: wxpython xrc wxformbuilder


    【解决方案1】:

    是的,只需像在普通(非 wxpython)python 方法中一样使用变量。

    【讨论】:

    • wxformbuilder 只接受属性对话框中的数字。目前我为每个变量提供了一些特定的数字。例如x12301y12302 等。然后我使用带有 sed 的 bash 脚本将变量添加到自动生成的文件中。
    • 在这种情况下,这是 wxformbuilder 的限制,您将不得不更改它吐出的代码,或者向开发人员提出他们添加到其功能的请求。
    【解决方案2】:

    作为一种解决方法,在每个变量的位置输入一个唯一的数字:例如: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 的值在运行时设置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 2022-11-27
      • 2023-01-05
      • 1970-01-01
      • 2012-02-13
      相关资源
      最近更新 更多