Есть в принципе рабочий код, который в ОС Линукс, python 2.6 читает с определенной переодичносистью текстовый файл и при его изменении выводит его в фрейме.
import wx,os
class MainFrame(wx.Frame):
def __init__(self, image,parent=None, id=-1):
wx.Frame.__init__(self,parent,-1,size=(500,500),pos=(1200,0),title='Info Pannel',
style=(wx.DEFAULT_FRAME_STYLE | wx.FRAME_NO_TASKBAR | wx.RESIZE_BORDER) ^ (wx.CAPTION))
# ^ (wx.CAPTION)
#func()
f_path='/var/log/syslog'
t_file=open(f_path,'r')
info=t_file.read()
self.cur_length = info
self.prv_length = 0
t_file.close()
self.pnl = wx.Panel(self, -1, size=(500,500), style=wx.NO_BORDER)
#pnl.SetBackgroundColour(wx.BLACK)
#pnl.SetForegroundColour(wx.GREEN)
self.vbox = wx.BoxSizer(wx.VERTICAL)
self.st1 = wx.TextCtrl(self.pnl, -1, info, size=(500,500), style=wx.ALIGN_LEFT | wx.TE_MULTILINE | wx.TE_WORDWRAP | wx.TE_RICH2)
color = wx.Color(192, 192, 192)
self.st1.SetBackgroundColour("Yellow")
self.st1.SetDefaultStyle(wx.TextAttr(color))
#self.st1.SetValue(info)
self.st1.SetInsertionPointEnd() #Прокручивает текст к последней строке
self.vbox.Add(self.st1, -1, wx.EXPAND | wx.TOP | wx.BOTTOM)
self.pnl.SetSizer(self.vbox)
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
self.timer.Start(1000)
def OnTimer(self, evt):
f_path='/var/log/syslog'
t_file=open(f_path,'r')
self.info=t_file.read()
self.cur_length=len(self.info)
t_file.close()
if self.cur_length != self.prv_length:
self.read_file()
self.prv_length=self.cur_length
self.st1 = wx.TextCtrl(self.pnl, -1, self.info, size=(500,500), style=wx.ALIGN_LEFT | wx.TE_MULTILINE | wx.TE_WORDWRAP | wx.TE_RICH2)
self.st1.SetBackgroundColour("Yellow")
self.st1.SetInsertionPointEnd() #Не работает
class App(wx.App):
def OnInit(self):
frame=MainFrame(None)
frame.Show()
return True
def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()
2. Как изменить цвет текста?
3. Что сделать, чтобы консольное окно не запускалось вместе с фреймом?