我正在编写一个程序,随机生成名人的加密引文。我的程序显示加密指针,用户必须解码报价。我想从哪个字母输入解码。我已经成功实现了它,当它们指定要解码的字母时(例如:“a = e”),程序用他们指定的文本替换加密文本。
我希望这样,当更换一个字母时,它会被涂成红色,以便用户可以跟上他们改变的字母。
def OnDec(self, e):
dlg = wx.TextEntryDialog(self, "Which letter do you wish to change? Use format: 'a=e'", "Decode Letter", "")
dlg.ShowModal()
decode = dlg.GetValue()
#Text entry filter
match = re.search(r'\w+=\w+|^\d*$', decode)
if not match:
err = wx.MessageDialog(self, "That is not a correct entry format.", "Entry Error", style=wx.ICON_HAND)
err.ShowModal()
#Letter replacement
origin = decode[0].upper()
replace = decode[2].upper()
for n in range(0, len(cryp)):
if cryp[n] == origin:
cryp[n] = replace
self.txt.SetLabel("".join(cryp))
self.txt.SetForegroundColour("RED")
self.sizer.Layout()
此过程是按下“解码字母”按钮时执行的事件。 cryp
这里是我从加密报价中创建的每个字母的列表。请求的decode
变量格式为“a = b”。
我可以将整个label
更改为RED,但我想改变已解码字母的颜色。
答案 0 :(得分:1)
StaticText小部件不支持该行为。您可以使用只读wx.TextCtrl来执行此操作,该wx.TextCtrl启用了wx.TE_RICH或wx.TE_RICH2标志。否则,您可能只想使用wx.GCDC或wx.PaintDC绘制文本。那将更加灵活。