我不熟悉Python,所以我也不熟悉wxPython。我只是想知道这两者之间有什么区别文本控件功能。这个小代码显示相同输出的三倍。如果没有区别,这些功能有没有历史原因?在
import wx
class testUI(wx.Panel):
textCtrl = ''
def __init__(self, parent, name):
super(testUI, self).__init__(parent, name=name)
self.buildUI()
self.Show(True)
self.textCtrl.write('bli\n')
self.textCtrl.WriteText('bla\n')
self.textCtrl.appendText('blub\n')
def buildUI(self):
self.textCtrl = wx.TextCtrl(self, style=wx.TE_MULTILINE|wx.TE_READONLY)
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.textCtrl, proportion=1, flag=wx.EXPAND)
def main():
app = wx.App(False)
root = wx.Frame(parent=None, title='testUI')
testUI(parent=root, name='testUI')
root.Show(True)
app.MainLoop()
# Standard boilerplate to call the main() function.
if __name__ == '__main__':
main()
谢谢:)
这三种方法在功能上似乎是相同的。但是,我认为您应该使用
AppendText
向文本控件添加额外的文本,以使您在代码本身中所做的非常清楚。大多数情况下,您通常会使用SetValue
。我在重定向stdout时使用了WriteText
,但仅此而已。您可以在这里阅读该用例:猜测人们可能会因为和我一样的原因来点击这个线程,这就是wxPython(4.0.1)的“新”版本将write()列为wx.TextCtrl类-但它没有定义。我需要一个写函数才能使用日志记录.StreamHandler类;因为这些方法都应该执行相同的操作,所以我用赋值重新创建了缺少的write方法-这起作用:
编辑:
好吧,没有阅读我的全部答案,}之间的区别似乎是第一个将文本添加到textcontrol的末尾,而第二个将文本添加到当前插入点,如here所述。在
.AppendText()
和{旧答案(仍可用作示例):
嗯。。奇怪。我在这里结束是因为在我的
wx.stc.StyledTextCtrl()
上使用.WriteText()
得到了奇怪的结果。我现在把它改成.write()
,它可以工作了。在我使用我的
wx.stc.StyledTextCtrl()
作为一个拖放窗口,其中列出了删除的文件路径。但是,由于窗口也是可编辑的(我需要它),所以InsertionPoint可以位于任何位置。在所以,每当有人把一个新的文件路径(或多个文件路径)放到我的
wx.stc.StyledTextCtrl()
上时,我需要它来检查当前的InsertionPoint
的位置。如果InsertionPoint
位于已保存文本的行中,则需要将其移到该行的末尾。从那里它需要打印一个换行符和接收到的文件路径。在我的代码如下:
现在,关于您的问题,我注意到当使用
self.interactivewindow.WriteText(text)
时,位于InsertionPoint
和该行末尾之间的文本将消失。新的文字写在上面。但是,当使用self.interactivewindow.write(text)
时,一切正常。在相关问题 更多 >
编程相关推荐