mein Projekt hat viele Python-Dateien, und jetzt ist das Problem, wenn ich auf die Schaltfläche in Main-UI-Schnittstelle geklickt hat, wird es einige Funktionen aufrufen eine andere Python-Datei (Unterprogramm), und ich brauche alle laufenden Status im Unterprogramm wird auch in Main-UI aktualisiert werden, wie mache ich das? Das Ding, das ich bis jetzt versuchen kann, ist bekannt, Socket verwendend, aber ich will wissen, haben Sie irgendwelche anderen guten Ideen auf diesem? Der Code wie folgt aus: 1. Main-UI:Wie aktualisiert man die Wxpython Statusleiste mit Laufzeitdaten Streaming in einer anderen * .py Datei
import wx,time
from threading import Thread
from path import basicTest
EVT_RESULT_ID = wx.NewId()
def EVT_RESULT(win, func):
win.Connect(-1, -1, EVT_RESULT_ID, func)
class ResultEvent(wx.PyEvent):
def __init__(self, data):
wx.PyEvent.__init__(self)
self.SetEventType(EVT_RESULT_ID)
self.data = data
class TestThread(Thread):
def __init__(self, wxObject):
Thread.__init__(self)
self.wxObject = wxObject
self.start()
def run(self):
dieser maskierte Unter Skript ausführen können, aber was ich tun möchte, ist, sie zu ersetzen mit einer anderen Python-Datei aufgerufen wird
'''
for i in range(6):
time.sleep(1)
wx.PostEvent(self.wxObject, ResultEvent(i))
'''
data = basicTest().run(10)
wx.PostEvent(self.wxObject, ResultEvent(data))
class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Tester")
panel = wx.Panel(self, wx.ID_ANY)
self.btn = wx.Button(panel, label="Start Test")
self.statusbar = self.CreateStatusBar()
self.btn.Bind(wx.EVT_BUTTON, self.onButton)
EVT_RESULT(self, self.updateStatus)
def onButton(self, event):
TestThread(self)
btn = event.GetEventObject()
btn.Disable()
def updateStatus(self, msg):
t = msg.data
self.statusbar.SetStatusText("Sequence %i running.." %t)
self.btn.Enable()
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = MyForm().Show()
app.MainLoop()
- Unterschrift:
import time class basicTest(): def run(self,inter): for i in range(inter): return i time.sleep(1)
Als Liste oben und ich auch bekannt, dass der Haupt-UI nur aktualisiert, wenn die Unter Skript fertig, es ist nicht von einer anderen Sub-Laufzeitaktualisierung, kann mir jemand helfen, sehr zu schätzen