我如何在Kivy中生成一些东西?

2024-04-18 20:36:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Kivy创建一个真相或挑战生成器。我已经完成了所有的设计,但我有一个问题。当我点击“生成”按钮时,我想让它从我的文本文件中随机选取一个挑战或真相。我的一个文本文件名为“dares.txt”和“truths.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]

如果有人能帮我,告诉我该怎么做,那就太棒了!我想知道,当用户在文本框中键入“真”或“敢”时,点击按钮时,它如何显示文本或随机真相或敢