我希望文本框自动删除以前的输出,因此我可以输入完整的句子,而不必在文本框上打印每个字母。但是,它会一直重复下去,因此当我按下保存按钮时,它会将每一行记录到剪贴板中。
我尝试使用Tkinter文本删除:text.delete(1.0,END)。但是,它不会删除任何内容。
class ExamplePanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, size=(3000,2000))
self.cipherText = wx.StaticText(self, label="Ciphered Text: ", pos=(20, 30))
#A multiline TextCtrl- Shows the events in the program.
#I think this might be where the problem is but I do not know how to
#get it to only print once, perhaps after the user hits "enter" or something.
self.logger = wx.TextCtrl(self, pos=(300,20), size=(200,300), style=wx.TE_MULTILINE | wx.TE_READONLY)
...
self.encrypt = wx.StaticText(self, label="Encryptor: ", pos=(20,60))
self.encryptEdit = wx.TextCtrl(self, value="", pos=(150, 60), size=(140,-1))
self.Bind(wx.EVT_TEXT, self.EncText, self.encryptEdit)
self.Bind(wx.EVT_CHAR, self.EncChar, self.encryptEdit)
...
def EncText(self,event):
result = ''
message = event.GetString()
for i in range(0, len(message)):
result = result + chr(ord(message[i]) - 2)
result = result.replace(chr(30), ' ')
print(result + '\n\n')
self.logger.AppendText(result + '\n\n')
如上所述,我的目标是每当进行一次新的击键操作时都将其清空文本框,以使其不再重复下去。当前是这样的:Current Output
答案 0 :(得分:1)
尝试使用.ApppendText(result + '\n\n')
而不是.SetValue(result + '\n\n')
。它应该替换TextCtrl
有关wx.TextCtrl的信息,请参阅文档。
wx.TextCtrl
基于wx.TextEntry
,因此您可以在文档中找到wx.TextEntry的TextCtrl
的某些功能。还有SetValue()
。