Die eingebaute Flet-Android-App ist innen leer, aber beim Testen funktioniert sie einwandfreiPython

Python-Programme
Anonymous
 Die eingebaute Flet-Android-App ist innen leer, aber beim Testen funktioniert sie einwandfrei

Post by Anonymous »

Ich erstelle meine erste App mit Flet in Python. Das Problem, das ich bekomme, ist, wenn ich die App als APK erstelle, ist sie innen einfach leer. Kein Fehler, kein Absturz. Das Seltsamste ist, dass die App beim Testen völlig einwandfrei funktioniert. Ich habe einige Leute im Internet gesehen, die das gleiche Problem hatten, aber ihre Lösungen haben bei mir nicht funktioniert.
Ich habe die App mit flet build apk -vv erstellt
Ein bisschen über die App:
  • Ich habe die App für mich und die erfundene Sprache meiner Freunde erstellt.
  • Einige Teile des Codes sind auf Russisch.
  • Es importiert nur Anfragen und flet sich selbst.
  • Es hat GET- und PUT-Anfragen.
  • Es hat ein paar UI-Elemente. (Eingabefelder, Schaltflächen, Beschriftungen)
Versionen von Sachen:
  • Python: 3.12
  • flet: 0.28.3
  • flutter: 3.29.2

Code: Select all

main.py
:

Code: Select all

import flet as ft
import process_data as pd
import requests

URL = "https://json.extendsclass.com/bin/
"

def get_data() -> dict | str:
res_get = requests.get(URL)

if res_get.status_code == 200:
return res_get.json()
else:
return res_get.text

def append(ru, wtml):
"""
:param ru: - in russian
:param wtml: - in watermelonian
"""

new_data = get_data()
new_data[ru] = wtml

res_update = requests.put(URL, json=new_data, headers={"Security-key": ""})
if res_update.status_code == 200:
return res_update.json()
else:
return res_update.text

def change(ru, wtml):
append(ru, wtml)

translations = get_data()

VALID_PUNCTUATION = ".  , ! ? ; : @ # $ % ^ & / * - + ~".split(" ")

def main(page: ft.Page):
def translate(e):
to_translate = input_field.value.lower()

to_translate = ''.join(char for char in to_translate if char not in VALID_PUNCTUATION)

to_translate = to_translate.split(" ")

result = ""
for word in to_translate:
if word in translations:
result += translations[word]
else:
if pd.check_word_already_good(word):
result += word
else:
result += "ар"+word+"уз"

result += " "

result = pd.copy_capitalization(input_field.value, result)
result = pd.copy_punctuation(input_field.value, result)

output_field.value = result

page.update()

input_field = ft.TextField(label="Русский", hint_text="Введите текст сюда")
output_field = ft.TextField(label="Арбузный", read_only=True, value="Жмакни на кнопку")
submit_button = ft.Button(text="Перевести", on_click=translate)

page.add(ft.Container(
content=ft.Column(
controls=(input_field, output_field, submit_button)
), margin=ft.margin.only(10, 110, 10, 100)))

def add_word(e):
append(new_word_field.value.lower(), new_word_translation_field.value.lower())
translations[new_word_field.value.lower()] = new_word_translation_field.value.lower()
new_word_text.value = f"Добавлено слово \"{new_word_field.value}\" -> \"{new_word_translation_field.value}\""
page.update()

new_word_field = ft.TextField(label="Добавить слово (Русский)", hint_text="Введите текст сюда")
new_word_translation_field = ft.TextField(label="Перевод (Арбузный)", hint_text="Введите текст сюда")
submit_new_word_button = ft.Button(text="Добавить", on_click=add_word)
new_word_text = ft.Text(value="")

page.add(ft.Container(
content=ft.Column(
controls=(new_word_field, new_word_translation_field, submit_new_word_button, new_word_text)
), margin=ft.margin.only(10, 10, 10, 110)))

page.update()

ft.app(main, port=5000)

Code: Select all

process_data.py
:

Code: Select all

def apply_spaces_patterned(pattern, text):
result = []
text_index = 0

for char in pattern:
if char == " ":
result.append(" ")
else:
if text_index < len(text):
result.append(text[text_index])
text_index += 1

if text_index < len(text):
result.append(text[text_index:])

return "".join(result)

def copy_capitalization(input_str: str, output_str: str):
words = input_str.split(" ")
output_words = output_str.split(" ")

for i, word in enumerate(words):
if word[0].capitalize() == word[0]:
# is capitalized
if word.upper() == word:
# is caps
try:
output_words[i] = output_words[i].upper()
except IndexError:
print("out of range, but it's fine bro")
else:
try:
output_words[i] = output_words[i][0].upper() + output_words[i][1:]
except IndexError:
print("out of range, but it's fine bro")
result = "".join(output_words)

return apply_spaces_patterned(output_str, result)

def copy_punctuation(pattern: str, text: str):
VALID_PUNCTUATION = ".  , ! ? ; : @ # $ % ^ & / * - + ~".split(" ")
punctuations = []

pattern_words = pattern.split(" ")
text_words = text.split(" ")

for i, word in enumerate(pattern_words):
if word[-1] in VALID_PUNCTUATION:
punctuations.append([word[-1], i])

result = ""
if not punctuations:
return text

for i, word in enumerate(text_words):
added = False
for punc in punctuations:
if punc[1] == i:
added = True
result = result + str(text_words[punc[1]] + punc[0]) + " "  # лучше это не трогать
break
if not added:
result = result + word + " "

if result[-1] == " ":
result = result[0:len(result)-1]

return result

def check_word_already_good(word):
allowed_letters = "а р б у з".split(" ")

for letter in word:
if letter not in allowed_letters:
return False

return True
Jede Hilfe ist willkommen!
Dinge, die ich versucht habe:
  • Die genaue Flet-Version in „requirements.txt“ einfügen
  • Flutter neu installieren
  • Neuaufbau
Was ich erwarte: App auf Android, die über eine Benutzeroberfläche verfügt und funktioniert.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post