Помогите повернуть изображение по событию в функции def read_sok():
.
Доступ к TestPY().update()
не приводит к повороту изображения. print("update")
строка выполняется
угол поворота изображения отправляется с сервера
приложение разрабатывается для имитации устройства переключения
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.graphics import Rotate
from kivy.uix.widget import Widget
from kivy.properties import NumericProperty
from kivy.graphics.context_instructions import PopMatrix, PushMatrix
# Socket client example in python
import socket
import sys
import threading
host = '192.168.12.95'
port = 2000 # web
a = 0
b = 0
c = 0
# create socket
print('# Creating socket')
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error:
print('Failed to create socket')
sys.exit()
print('# Getting remote IP address')
try:
remote_ip = socket.gethostbyname(host)
except socket.gaierror:
print('Hostname could not be resolved. Exiting')
sys.exit()
# Connect to remote server
print('# Connecting to server, ' + host + ' (' + remote_ip + ')')
s.connect((remote_ip, port))
# Send data to remote server
print('# Sending data to server')
request = "hello server"
try:
s.sendall(request.encode('utf-8'))
except socket.error:
print('Send failed')
sys.exit()
# Receive data
print('# Receive data from server')
reply = s.recv(4096)
print(reply)
def read_sok():
global a, b, c
while 1:
data = s.recv(1024)
print(data.decode('utf-8'))
b = int(data.decode('utf-8'))
TestPY().update()
potok = threading.Thread(target=read_sok)
potok.start()
class TestKV(Image):
angle = NumericProperty(0)
Builder.load_string('''
<TestPY>:
canvas.before:
PushMatrix
Rotate:
angle: root.angle
axis: 0, 0, 1
origin: root.center
canvas.after:
PopMatrix
''')
class TestPY(Image):
global a, b, c
angle = NumericProperty(0)
def __init__(self, **kwargs):
super(TestPY, self).__init__(**kwargs)
# self.x = x -- not necessary, x is a property and will be handled by super()
with self.canvas.before:
PushMatrix()
self.rot = Rotate()
self.rot.angle = 0
self.rot.origin = self.center
self.rot.axis = (0, 0, 1)
with self.canvas.after:
PopMatrix()
def on_touch_down(self, touch):
self.rot.angle = b
def update(self):
self.rot.angle = b
print("update")
def dd(self):
rot.angle = b
print("dd")
class MainWidget(Widget):
# this is the main widget that contains the game.
def __init__(self, **kwargs):
super(MainWidget, self).__init__(**kwargs)
self.all_sprites = []
self.k = TestKV(source="dd1.png", x=10, size=(400, 400))
self.add_widget(self.k)
self.p = TestPY(source="dd2.png", x=10, size=(400, 400))
self.add_widget(self.p)
class TheApp(App):
def build(self):
parent = Widget()
app = MainWidget()
parent.add_widget(app)
return parent
if __name__ == '__main__':
TheApp().run()
введите описание изображения здесь