Как я могу что-то сгенерировать в Kivy? - PullRequest
0 голосов
/ 11 июля 2020

Я хочу создать генератор «правда или действие» с помощью Kivy. Я закончил проектирование, но у меня есть одна проблема. Когда я нажимаю кнопку «Создать», я хочу, чтобы она выбирала случайный вызов или правду из имеющихся у меня текстовых файлов. Один из моих текстовых файлов называется «dares.txt» и «trues.txt». Как я могу сделать так, чтобы, когда пользователь нажимает кнопку «Создать», он показывал случайный вызов или правду из моих текстовых файлов ниже. Вот мой код для приложения «Правда или действие».

файл main.py:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
import json, glob
from datetime import datetime
from pathlib import Path
import random

Builder.load_file('design.kv')

class LoginScreen(Screen):
    def sign_up(self):
        self.manager.current = "sign_up_screen"

    def login(self,uname,pword):
        with open("users.json") as file:
            users = json.load(file)
        if uname in users and users[uname]['password'] == pword:
            self.manager.current = "login_screen_success"
        else:
            self.ids.login_wrong.text = "Sorry, The Username Or Password You Entered was Incorrect. Please Try Again!"

class RootWidget(ScreenManager):
    pass

class SignUpScreen(Screen):
    def add_user(self,uname,pword):
        with open("users.json") as file:
            users = json.load(file)

        users[uname] = {'username': uname, 'password': pword,
            'created': datetime.now().strftime("%Y-%m-%d %H-%M-%S")}
        
        with open("users.json", 'w') as file:
            json.dump(users,file)
        self.manager.current = "sign_up_screen_success"

class SignUpScreenSuccess(Screen):
    def go_to_login(self):
        
        self.manager.transition.direction = 'right'
        self.manager.current = "login_screen"

class LoginScreenSuccess(Screen):
    def log_out(self):
        self.manager.transition.direction = "right"
        self.manager.current = "login_screen"       

class MainApp(App):
    def build(self):
        return RootWidget()

if __name__ == "__main__":
    MainApp().run()

файл design.kv :

<LoginScreenSuccess>:
    GridLayout:
        cols: 1
        padding: 30, 30
        spacing: 30, 30
        Button:
            color: 1, 0, 0, 1
            text: "Quit App"
            on_press: root.log_out()
        Label:
            text: "Truth or Dare?"
        TextInput:
            hint_text: "Two Things To Try: Truth or Dare"
        Button:
            text: "Generate"
            #on_press: root
        ScrollView:
        Label:
            text: ""
            #text_size = self.width, None
            #size_hint_y: None
            #height: self.texture_size[1]

Если бы кто-нибудь мог помочь и сказать мне, что именно делать, это было бы здорово! Я хотел бы знать, как при нажатии кнопки она может отображать текст или случайную истину или действие, когда пользователь вводит «правда» или «смею» в текстовое поле.

...