import xcgui
from xcgui import XApp, XWindow, XButton, XEdit
import queue
import threading
uiUper = queue.Queue()
class DemoWindow(XWindow):
def __init__(self):
super(DemoWindow, self).__init__(400, 300, "XCGUI界面库 for python")
self.enableLayout(True)
self.setAlignV(xcgui.layout_align_center)
self.setAlignH(xcgui.layout_align_center)
self.enableHorizon(False)
self.setSpace(20)
self.regEvent(xcgui.WM_TIMER,self.onTimer)
self.setTimer(1,10)
self.btn = XButton(100, 30, "测试", self)
self.btn.regEvent(xcgui.XE_BNCLICK, self.onBtnClick)
self.edit = XEdit(200, 30, self)
def onTimer(self,id,handled):
try:
# 从队列中获取任务
task, arg = uiUper.get(timeout=0.001)
if task == "callUiReander":
self.callUiReander(arg)
uiUper.task_done()
except queue.Empty:
pass
def callUiReander(self,ui):
ui(self)
def callThread2Ui(self,ui,th,*args):
def thread(uiUper,ui,th,*args):
th(*args)
uiUper.put(("callUiReander", ui))
thread = threading.Thread(target=thread, args=(uiUper,ui,th,*args))
thread.start()
def onBtnClick(self, event, userdata):
def ui(self):
self.edit.setText("你好,世界!")
self.edit.redraw(True)
def th(a,b):
import time
time.sleep(1)
print(a,b)
self.callThread2Ui(ui,th,"参数1","参数2")
if __name__ == '__main__':
app = XApp()
window = DemoWindow()
window.showWindow()
app.run()
app.exit()
本站文章除注明转载/出处外,均为博主 spooking 原创或翻译,转载前请务必署名。