gpt4 book ai didi

python - wx.TextCtrl .write/.WriteText/.AppendText 之间的区别

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:19 24 4
gpt4 key购买 nike

我是 Python 新手,所以我也是 wxPython 新手。我只是想知道这些 wx.TextCtrl 函数之间是否有任何区别。这个迷你代码显示了三倍相同的输出。如果没有差异,这些功能是否有历史原因?

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()

谢谢:)

最佳答案

猜测人们可能出于与我相同的原因点击此线程,即 wxPython (4.0.1) 的"new"版本将 write() 列为 wx.TextCtrl 类上的方法 - 但它没有定义。我需要一个写入函数才能使用logging.StreamHandler类;因为这些方法都应该做同样的事情,所以我通过赋值重新创建了缺少的 write 方法 - 这有效:

import wx

import logging
lgr = logging.getLogger(__name__)
lgr.setLevel(logging.DEBUG)
fmt = logging.Formatter('%(asctime)s: %(name)s [%(levelname)s] %(message)s')
debug = lgr.debug

class LogTab(wx.Panel):
def __init__(self, *args, **kwds):
kwds["style"] = wx.TAB_TRAVERSAL
wx.Panel.__init__(self, *args, **kwds)
self.text_log = wx.TextCtrl(self, wx.ID_ANY, "",
style=wx.TE_MULTILINE | wx.TE_READONLY)

self.text_log.write = self.text_log.WriteText

self.__set_properties()
self.__do_layout()
self.log_handler = logging.StreamHandler(self.text_log)
self.log_handler.setFormatter(fmt)

lgr.addHandler(self.log_handler)

关于python - wx.TextCtrl .write/.WriteText/.AppendText 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26614187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com