Класс kivymd MDDropDownMenu не распознается на AndroidPython

Программы на Python
Ответить
Anonymous
 Класс kivymd MDDropDownMenu не распознается на Android

Сообщение Anonymous »

Я работаю над своим бюджетным приложением.
Это добавляет ряд к моему годовому бюджетному плану.
У меня нет проблем с Windows и Linux Mint, только после преобразования в .apk для Android нет. больше распознает класс в раскрывающемся меню.
вот файл .kv:

Код: Выделить всё

Screen:
MDBoxLayout:
adaptive_height: True
padding: 40
spacing: 20
orientation: "vertical"

MDLabel:
text: "budged_app"
halign: "center"

MDLabel:
id: today_label
text: "Date: "

MDLabel:
text: "Description: "

MDTextField:
id: description_input
text: ""
MDLabel:
text: "Category: "

MDButton:
id: category_selector
# pos_hint: {"top": .98}
# x: "12dp"
pos_hint: {"center_x": .5, "center_y": .1}
icon: "menu"
on_release: app.open_menu()

MDButtonText:
id: category
text: "Sonstiges"

MDLabel:
text: "Expense: "

MDTextField:
id: expense_input
text: ""

MDButton:
id: upload_input
on_press: app.upload()
style: "elevated"
pos_hint: {"center_x": .5, "center_y": .1}

MDButtonIcon:
icon: "plus"

MDButtonText:
text: "Upload"
а вот main.py:

Код: Выделить всё

import gspread
from google.oauth2.service_account import Credentials
from datetime import date

from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu

categories = {"c1": "Lebensbedarf",
"c2": "Anschaffungen",
"c3": "Freizeit",
"c4": "Auto",
"c5": "Spende",
"c6": "Geschenke",
"c7": "Garten",
"c8": "Sonstiges"}

class BudgedApp(MDApp):
def on_start(self):
self.root.ids.today_label.text = "Date: "  + str(date.today().strftime('%y/%m/%d'))

self.menu_items = [
{
"text": f"{code}",
"on_release": lambda x=f"{code}": self.set_category(x)
}
for code in categories.values()
]

def open_menu(self):
self.menu = MDDropdownMenu(
caller=self.root.ids.category_selector,
items=self.menu_items,
position="center")
self.menu.open()

def set_category(self, category):
self.root.ids.category.text = category
self.menu.dismiss()

def clear(self):
self.root.ids.description_input.text = ""
self.root.ids.expense_input.text = ""
self.root.ids.category.text = "Sonstiges"

def upload(self):
try:
float(self.root.ids.expense_input.text)
except ValueError:
self.root.ids.expense_input.text = "incorrect entry!"
return

def next_available_row(work_sheet: gspread.Worksheet):
str_list = list(filter(None, work_sheet.col_values(1)))
return str(len(str_list) + 1)

scopes = [
"https://www.googleapis.com/auth/spreadsheets"
]

creds = Credentials.from_service_account_file(filename="assets/credentials.json", scopes=scopes)
client = gspread.authorize(creds)

sheet = client.open_by_key("#############################################")
variable_expenses = sheet.get_worksheet(3)

# value_list = sheet.sheet1.row_values(50)

next_row = next_available_row(variable_expenses)

today = date.today().strftime('%y/%m/%d')
variable_expenses.update_acell("A{}".format(next_row), str(today))

variable_expenses.update_acell("B{}".format(next_row), self.root.ids.description_input.text)
variable_expenses.update_acell("C{}".format(next_row), self.root.ids.category.text)

variable_expenses.update_acell("E{}".format(next_row), value=float(self.root.ids.expense_input.text))

self.clear()

def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "Gray"
return Builder.load_file("budged_app_theme.kv")

if __name__ == "__main__":
BudgedApp().run()
вот выдержка из buildozer.spec
(наверное, там больше, чем мне нужно...):

Код: Выделить всё

requirements = python3,kivy,gspread,oauth2client,httplib2,pyopenssl,google-auth-oauthlib,pyasn1,pyasn1-modules,rsa,requests,google-auth-httplib2,openssl,google-api-python-client,google-auth,credentials,oauth2,google,cachetools,urllib3,chardet,idna,requests_oauthlib,oauthlib,pyparsing

Вот фрагмент логарифма:
Это может быть связано с порядком, означающим, что что-то вызывается до того, как оно было определено. Но, к сожалению, я не могу этого понять.

Подробнее здесь: https://stackoverflow.com/questions/792 ... on-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»