![](/img/trans.png)
[英]wxPython: How to update window size as the window resizes in real-time
[英]Update wxPython grid in real time
我正在從一個巨大的日志中提取數據,然后更新wxPython網格中的條目。 使用我擁有的代碼,只有在操作完成后才能看到窗口,需要5分鍾才能完成操作。 有什么方法可以更新並從時間= 0開始查看網格上的數據。 我試過了:
import wx
import wx.grid as gridlib
class MyForm(wx.Frame):
def __init__(self):
##
# constructor to create the basic frame
wx.Frame.__init__(self, None, wx.ID_ANY, "Tool")
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
self.grid = gridlib.Grid(panel)
rows = 4
column = 600000
self.grid.CreateGrid(column, rows)
self.count = 0
# change a couple column labels
self.grid.SetColLabelValue(0, "Timestamp")
self.grid.SetColLabelValue(1, "CMD")
self.grid.SetColLabelValue(2, "Address")
self.grid.SetColLabelValue(3, "Data")
# Few More operations to calculate CMD,Timestamp field
for i in range(10**5):
self.count += 1
self.grid.SetCellValue(self.count,1,'CMD4')
self.grid.SetCellValue(self.count,0,str(self.count))
self.grid.SetCellValue(self.count, 2, "Extracted Address")
self.grid.SetCellValue(self.count, 3, "Extracted Data")
# change the row labels
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.grid, 1, wx.EXPAND, 5)
panel.SetSizer(sizer)
if __name__ == "__main__":
app = wx.App()
frame = MyForm()
frame.Show()
app.MainLoop()
使用wx.Yield()
將控制權交還給主循環。
在這里,我使用divmod
進行每1000次迭代,並調用wx.Yield
。
我還使用MoveCursorDownBlock
允許您直觀地跟蹤更MoveCursorDownBlock
格。
您可能希望刪除或修改它,因為它會減慢程序的執行速度。
import wx
import wx.grid as gridlib
class MyForm(wx.Frame):
def __init__(self):
##
# constructor to create the basic frame
wx.Frame.__init__(self, None, wx.ID_ANY, "Tool")
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
self.grid = gridlib.Grid(panel)
rows = 4
column = 100001
self.grid.CreateGrid(column, rows)
self.count = 0
# change a couple column labels
self.grid.SetColLabelValue(0, "Timestamp")
self.grid.SetColLabelValue(1, "CMD")
self.grid.SetColLabelValue(2, "Address")
self.grid.SetColLabelValue(3, "Data")
# Few More operations to calculate CMD,Timestamp field
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.grid, 1, wx.EXPAND, 5)
panel.SetSizer(sizer)
self.Show()
for i in range(10**5):
self.count += 1
self.grid.SetCellValue(self.count,1,'CMD4')
self.grid.SetCellValue(self.count,0,str(self.count))
self.grid.SetCellValue(self.count, 2, "Extracted Address")
self.grid.SetCellValue(self.count, 3, "Extracted Data")
quo,rem = divmod(self.count,1000)
if rem == 0:
self.grid.MoveCursorDownBlock(expandSelection=False)
wx.Yield()
if __name__ == "__main__":
app = wx.App()
frame = MyForm()
app.MainLoop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.