谁能伸出援手。
我正在用Python中的BoaConstructor构建一个使用wx的应用程序。STC。样式文本控制。 在这个样式文本ctrl中,我通过Scapy的十六进制函数输出十六进制数据。 它添加行号、十六进制转储和字符转码。 不幸的是,我无法弄清楚如何在 StyledTextCtrl 中格式化此文本,使其像普通十六进制编辑器一样显示(请参阅此处的图像 https://i.stack.imgur.com/xtGa3.jpg)。 谢谢!
既然你说输出在其他编辑器中看起来不错,我猜问题是字体对字符使用可变的像素宽度(例如,如果像"w"这样的宽字符是 15 像素宽,那么像"i"这样的更细的字符可能只有 10 像素)。在固定宽度字体(有时称为单角字体或打字机文本字体)中,所有字符的宽度完全相同。
您可以在屏幕截图中看到这一点的证据;在".("部分。空格字符似乎比数字细得多,因此所有这些缺失的像素都会使底行的第三"列"显得太左(而第二行的额外宽度将其稍微向右推)
您需要找到一种字体,以便 IsFixedWidth() 返回True
然后将 STC 设置为使用该字体。通常,您会使用 SetFont() 方法设置它,但我碰巧知道 STC 更喜欢使用自己的方法。我发现这个特定于STC的StyleSetFont()方法,所以这可能是一个更好的选择。
至于选择字体,这里有一个关于字体如何在 wxpython 中工作的好教程。作者实际上是这里的活跃成员。特别是,在该文章中搜索他的"wx.字体枚举器小部件"示例。它应该允许您找到固定宽度的字体并查看它们以查看您是否喜欢它们。对于快速而肮脏的解决方案,此论坛帖子讨论了保证固定宽度的 wx.TELETYPE
标志,这些代码示例应该让您了解如何使用它。
祝你好运!
----编辑----
我对 STC 不是很熟悉,但我记得我之前回答了一个涉及 STC 的问题,您可能需要在设置字体后调用StyleClearAll()
。请参阅该答案的"编辑"部分,了解有关为什么可能需要这样做的更多信息。