使用Python wxWidgets wxlistbox时字符串中选项卡的替代方法

时间:2013-04-16 23:45:59

标签: python wxpython wxwidgets

如上所述:http://docs.wxwidgets.org/trunk/classwx_list_box.html

  

请注意,列表框项目文本中的当前TAB字符在所有平台下都不能一致地处理,因此应该用空格替换它们以便在任何地方正确显示字符串。列表框根本不支持任何其他控制字符。

到目前为止,根据我在Windows 7中使用Python 2.7 32位的经验,在wxListBox选择的字符串中使用\ t无效;正如预期的那样

我有一堆来自数据库的行,我想要在wxListBox的一行中显示多个列(并最终用于选择一行或多行)。现在我使用空格作为字符串中值之间的分隔符。但是,这不是很理想,因为列是可变长度的。

是否有替代不是简单分隔符的\ t?这里的要点是让每一行的所有列都整齐地呈现,即

    column1        value1            value2
    column442142   values24234234    val2

而不是

   column1        value1        value2
   column442142        values24234234        val2

wxGrid浮现在脑海中,但我不认为这对我有用,因为我不想在一行中选择特定的单元格(我似乎无法找到禁用它的功能),我只希望用户能够选择一行或多行。

2 个答案:

答案 0 :(得分:0)

print "    4 whitespaces replace a tab"

print "%20s"%some_string_padded_to_20_chars

答案 1 :(得分:0)

我的建议是使用wxListCtrl进行简单的多列数据显示,或wxDataViewCtrl如果您需要更多功能。

FWIW,您可以使用wxGrid::SetSelectionMode() wxGridSelectRows参数来禁用单元格选择,但wxGrid可能仍然不是用于此类内容的最佳控件。

有关不同控件的简要摘要,请参阅this slide from my lectures