wxPython StyledTextCtrl十六进制格式

2024-05-23 15:29:29 发布

您现在位置:Python中文网/ 问答频道 /正文

给任何能伸出援手的人。在

我正在用Python中的BoaConstructor构建一个应用程序,它使用wx.STC.StyledTextCtrl. 在这个styledtextctrl中,我通过Scapy的hexdump函数输出十六进制数据。它添加行号、十六进制转储和字符转码。不幸的是,我不知道如何在StyledTextCtrl中设置文本格式,使其像普通十六进制编辑器那样显示(参见图片http://imgur.com/a/tqE02)。谢谢!在


Tags: 数据函数文本格式应用程序编辑器字符转码hexdump
1条回答
网友
1楼 · 发布于 2024-05-23 15:29:29

既然你说在其他编辑器中输出看起来不错,我猜问题是字体对字符使用可变的像素宽度(例如,如果像“w”这样的宽字符是15像素宽,那么像“I”这样的较薄字符可能只有10像素)。在固定宽度字体(有时称为单幅字体或打字机文本字体)中,所有字符的宽度都完全相同。在

您可以在屏幕截图中看到这一点的证据;在“.”部分之前的第二行有一个轻微的额外缩进。似乎空格字符比数字要薄得多,因此所有丢失的像素都会使底行的第三个“列”显得太左(而第二行的额外宽度将其稍微向右推)

您需要找到一种字体,使IsFixedWidth()返回{},然后设置STC以使用该字体。通常,您应该使用SetFont()方法来设置它,但是我碰巧知道stc更喜欢使用自己的方法。我发现这个StyleSetFont()方法是特定于stc的,所以这可能是一个更好的选择。在

至于如何选择字体,here是一个很好的关于wxpython中字体工作的教程。作者实际上是这里的活跃成员。特别是在那篇文章里搜索他的“wx.FontEnumerator“小部件”示例。它应该允许你找到固定宽度的字体,并查看它们,看看你是否喜欢它们。为了快速而肮脏的解决方案,this forum post讨论了保证固定宽度的wx.TELETYPE标志,these code samples应该能让你知道如何使用它。在

祝你好运!在

编辑
我不太熟悉stc,但我记得从a previous answer起,我提出了一个涉及stc的问题,您可能需要在设置字体后调用StyleClearAll()。有关为什么需要这样做的更多信息,请参阅该答案的编辑部分。在

相关问题 更多 >