带有高速公路 WAMP 的 Kivy GUI
Kivy GUI with autobahn WAMP
我正在尝试将 kivy 应用程序和高速公路 wamp 结合起来。
首先,我想制作最基本的应用程序,它将显示标签并在发布命令出现时更改它。
这是我的基本kivy应用:
class MyFrontendComponent(App):
def build(self):
root = self.setup_gui()
return root
def setup_gui(self):
self.label = Label(text='connecting...\n')
self.layout = BoxLayout(orientation='vertical')
self.layout.add_widget(self.label)
return self.layout
def changeLabel(self, text):
self.label.text = text
if __name__ == '__main__':
# Run the kivy app
kivyapp = MyFrontendComponent()
kivyapp.run()
下面是高速公路 Wamp 的实施方式:
http://autobahn.ws/python/wamp/programming.html
from autobahn.twisted.wamp import ApplicationSession
from twisted.internet.defer import inlineCallbacks
class MyComponent(ApplicationSession):
@inlineCallbacks
def onJoin(self, details):
print("session ready")
def oncounter(count):
print("event received: {0}", count)
try:
yield self.subscribe(oncounter, u'com.myapp.oncounter')
print("subscribed to topic")
except Exception as e:
print("could not subscribe to topic: {0}".format(e))
由于 kivy 应用程序主循环,我尝试使用 autobahn.twisted.wamp 使用线程的应用程序,但它们没有同步
from autobahn.twisted.wamp import Application
app = Application()
@app.signal('onjoined')
def onjoined():
kivyapp.changeLabel("realm joined!")
你能给我一个关于如何结合它们的建议吗,因为我搜索了很多都没有结果。
您需要 运行 Kivy 与 Twisted support activated。
这里是complete example that demonstrates how to use WAMP for real-time messaging from Kivy using Crossbar.io.
我正在尝试将 kivy 应用程序和高速公路 wamp 结合起来。 首先,我想制作最基本的应用程序,它将显示标签并在发布命令出现时更改它。
这是我的基本kivy应用:
class MyFrontendComponent(App):
def build(self):
root = self.setup_gui()
return root
def setup_gui(self):
self.label = Label(text='connecting...\n')
self.layout = BoxLayout(orientation='vertical')
self.layout.add_widget(self.label)
return self.layout
def changeLabel(self, text):
self.label.text = text
if __name__ == '__main__':
# Run the kivy app
kivyapp = MyFrontendComponent()
kivyapp.run()
下面是高速公路 Wamp 的实施方式: http://autobahn.ws/python/wamp/programming.html
from autobahn.twisted.wamp import ApplicationSession
from twisted.internet.defer import inlineCallbacks
class MyComponent(ApplicationSession):
@inlineCallbacks
def onJoin(self, details):
print("session ready")
def oncounter(count):
print("event received: {0}", count)
try:
yield self.subscribe(oncounter, u'com.myapp.oncounter')
print("subscribed to topic")
except Exception as e:
print("could not subscribe to topic: {0}".format(e))
由于 kivy 应用程序主循环,我尝试使用 autobahn.twisted.wamp 使用线程的应用程序,但它们没有同步
from autobahn.twisted.wamp import Application
app = Application()
@app.signal('onjoined')
def onjoined():
kivyapp.changeLabel("realm joined!")
你能给我一个关于如何结合它们的建议吗,因为我搜索了很多都没有结果。
您需要 运行 Kivy 与 Twisted support activated。
这里是complete example that demonstrates how to use WAMP for real-time messaging from Kivy using Crossbar.io.