Как показать диалог без нажатия кнопки в kivy?

avatar
I3lackI3uck
8 августа 2021 в 20:14
66
1
0

Как и в начале приложения приложения, я хочу открыть диалоговое окно, чтобы пользователь мог ввести пароль, и тогда только приложение продолжит работу

Источник
MattDMo
8 августа 2021 в 20:19
0

Stack Overflow не является сервисом для написания кода или обучения. Пожалуйста, отредактируйте свой вопрос и опубликуйте то, что вы пробовали до сих пор, включая пример ввода, ожидаемый вывод, фактический вывод (если есть) и полный текст любых ошибок или трассировок, все как отформатированный текст в самом вопросе. Не публиковать изображения текста.

Ответы (1)

avatar
user15605156
9 августа 2021 в 03:01
0

вы можете создать другой поток, который принимает ответы пользователя из поля ввода и проверяет, достигнуто ли какое-либо условие, чтобы он останавливал цикл

вы сделаете что-то вроде:

import threading
from kivymd.app import MDApp
from kivy.lang import Builder
from threading import Thread
from kivymd.uix.screen import Screen

first_one = '''
MDTextField:
    id:ii
    pos_hint:{'center_x':.5,'center_y':.5}
    size_hint_x:None
    width:150
'''

class appp(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.screen = Screen()
        self.fu = Builder.load_string(first_one)
        self.screen.add_widget(self.fu)
        thread7 = threading.Thread(target=self.running)
        thread7.start()
    def build(self):
        return self.screen
    def running(self):
        while True:
            if self.fu.text != "":
                print(self.fu.text)
            if len(self.fu.text) > 15:
                break
appp().run()
I3lackI3uck
9 августа 2021 в 05:25
0

Итак, это совершенно другой подход... но что делает thread7 = threading.Thread(target=self.running) thread7.start()?

user15605156
9 августа 2021 в 12:04
0

это делает второстепенную программу из основной программы --- вы можете больше узнать о концепции многопоточности. вы можете изменить MDTextField на другой виджет, но убедитесь, что этот виджет возвращает текст от пользователя