#python #wxpython
#python #wxpython
Вопрос:
Я переношу некоторый код Python с 2.7 на 3.x. Исходный код завершается ошибкой с этой ошибкой:
class myTextLog(wx.PyLog):
AttributeError: 'module' object has no attribute 'PyLog'
При проверке наличия wx.PyLog его действительно там нет:
>>> import wx
>>> wx.PyLog
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'PyLog'
>>> wx.version()
u'4.1.0 msw (phoenix) wxWidgets 3.1.4'
Когда я проверяю наличие wx.PyLog в более старой версии wx, он есть:
>>> import wx
>>> wx.PyLog
<class 'wx._misc.PyLog'>
>>> wx._misc
<module 'wx._misc' from '/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_misc.pyc'>
>>> wx.version()
'3.0.2.0 gtk2 (classic)'
Я вижу, что он используется в этом старом примере кода: http://www2.geog.ucl.ac.uk /~plewis/bpms/src/start/Main.py
#---------------------------------------------------------------------------
# Show how to derive a custom wxLog class
class MyLog(wx.PyLog):
def __init__(self, textCtrl, logTime=0):
wx.PyLog.__init__(self)
self.tc = textCtrl
self.logTime = logTime
def DoLogString(self, message, timeStamp):
#print message, timeStamp
#if self.logTime:
# message = time.strftime("%X", time.localtime(timeStamp))
# ": " message
if self.tc:
self.tc.AppendText(message 'n')
Где-то по ходу строки он, похоже, был удален. Какая подходящая замена приведенному выше коду, учитывая, что wx.PyLog больше недоступен?
Ответ №1:
В python 3.x вы должны использовать: logging
Вы захотите взглянуть на ведение журнала КАК
import logging
logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')
logging.error('And non-ASCII stuff, too, like Øresund and Malmö')