Мне нужна помощь, чтобы понять, почему мое приложение просто закрывается сразу после экрана предварительной sh. Оно хорошо работает на моей ma c OS X. В приложении есть компоненты из socket, json и apscheduler. Я поместил исходную папку apscheduler в папку приложения на том же уровне, что и main.py, а также добавил «apscheduler» в строку requirements :. это видно из моего файла spe c, который я включу. Я подозреваю, что это может быть связано с тем, что сокет не подключается к моей сети? Я могу выделить это на другой экран, чтобы сделать это вручную. Любая помощь очень ценится.
main.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.lang.builder import Builder
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.graphics import Rectangle, Color
import socket
import json
import threading
from apscheduler.schedulers.background import BackgroundScheduler
class Screen_Manager(ScreenManager):
screen_1 = ObjectProperty()
class Screen_1(Screen):
main_display = ObjectProperty()
def __init__(self, **kwargs):
super(Screen_1, self).__init__(**kwargs)
self.port = 55345
######----2nd thread--------------########
th = threading.Thread(target=self.server_program)
th.start()
#####--------start of socket--------------#######
def server_program(self):
# get the hostname
self.host = socket.gethostname()
self.ip_address = socket.gethostbyname(self.host)
server_socket = socket.socket() # get instance
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
server_socket.bind((self.ip_address, self.port))
server_socket.listen(2)
conn, address = server_socket.accept() # accept new connection
b = b''
while True:
data = conn.recv(1024)
if data:
b += data
self.utf_data = json.loads(data.decode('utf-8'))
self.main_display.text = self.utf_data
if not data:
conn, address = server_socket.accept() # accept new connection
server_socket.close()
class MainApp(App):
def build(self):
self.title = "Number Display App"
self.sm = Screen_Manager()
return self.sm
if __name__=="__main__":
MainApp().run()
main.kv
<Screen_Manager>:
Screen_1:
<Screen_1>:
id: screen_1
name: "first"
main_display: display_1
Label:
id: display_1
text: ""
font_size: "450sp"
color: 1,0,1,1
background_color: 0.1, 0.5, 0.6,
вот мой .spe c файл (по крайней мере, строки для требования:
# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,ivy,apscheduler
inte rnet разрешение также включено.
# (list) Permissions
android.permissions = INTERNET
вот фотография, которая показывает, что я включил папку с файлами для apscheduler.
еще раз спасибо.