Note: Je ne suis pas un programmeur et je ne connais pas la terminologie exacte que je devrais utiliser. C'est un programme de base et je n'essaie pas d'utiliser littéralement les "kivy screens" ou le gestionnaire d'écran kivy.Python - Comment ajouter un deuxième "écran" à mon application kivy?
J'ai passé des heures à chercher partout sur google en essayant de résoudre ce problème et je suis à court. J'ai un programme python kivy. J'ai créé l'écran de démarrage initial. Lorsque l'utilisateur clique sur un jeu particulier, je veux que l'écran efface toutes les données sur le premier écran, puis place des boutons et des étiquettes sur l'écran. Presque comme un "nouvel" écran. Je l'ai actuellement à l'endroit où il efface l'écran quand un utilisateur sélectionne un jeu, mais si j'essaye et ajoute des boutons à cet écran, ils peuplent sur l'écran principal.
Ceci est mon code python:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.dropdown import DropDown
class MadLib(Widget):
pass
class MadlibApp(App):
def build(self):
return MadLib()
app = MadlibApp()
if __name__ == '__main__':
app.run()
Voici mon fichier .kv:
<MadLib>:
canvas:
Color:
rgba: 0.2, 0.8, 0.2, 1
Rectangle:
pos: 0, 0
size: self.width, self.height
Button:
tag: 'exit'
background_color: 0, 0, 0, 0
height: 100
width: 100
center_x: root.width - self.width/2
top: root.top
on_press: app.stop()
Image:
source: r"C:\Users\kraak\Desktop\Python\Python\basicexitbutton.gif"
top: root.top
center_x: root.width - self.width/2
size_hint_y: None
height: '96dp'
Button:
tag: 'menu'
background_color: 0, 0, 0, 0
id: btn
top: root.top - 10
center_x: self.width/2 + 10
on_release: dropdown.open(self)
size_hint_y: None
height: '48dp'
width: '175dp'
Image:
source: r"C:\Users\kraak\Desktop\Python\Python\basicmenubutton.gif"
top: root.top + 10
center_x: self.width/2
size_hint_y: None
height: '96dp'
Widget:
on_parent: dropdown.dismiss()
DropDown:
id: dropdown
on_select: btn.text = '{}'.format(args[1])
Button:
center_x: self.width/2
text: 'Browse'
font_size: '32'
background_color: 0, 0 ,0, 0
size_hint_y: None
height: '48dp'
on_release: dropdown.select('A')
Button:
text: 'Categories'
font_size: '32'
background_color: 0, 0 ,0, 0
size_hint_y: None
height: '48dp'
on_release: dropdown.select('B')
Button:
text: 'Settings'
font_size: '32'
background_color: 0, 0 ,0, 0
size_hint_y: None
height: '48dp'
on_release: dropdown.select('C')
Button:
text: 'Game 1'
font_size: '32'
background_color: 0, 0 ,0, 0
size_hint_y: None
height: '48dp'
top: root.top/1.33
center_x: root.width/4
on_press: root.clear_widgets()
Button:
text: 'Game 2'
font_size: '32'
background_color: 0, 0 ,0, 0
size_hint_y: None
height: '48dp'
top: root.top/1.66
center_x: root.width/4
on_release: dropdown.select('C')
<Game1>:
Button:
id: tst
text: 'Test'
font_size: '32'
background_color: 0, 0 ,0, 0
size_hint_y: None
height: '48dp'
top: root.top
center_x: root.width/4
Lorsque l'utilisateur clique sur le jeu 1, je voudrais pour sauter au jeu 1 classe , cependant, il ne peut pas parce que le programme ne sait pas qu'il existe encore. Je ne suis pas sûr de savoir comment régler ça.
Je ne suis pas essayer d'utiliser des écrans littérales. Je dois juste faire un programme de base et vouloir le garder aussi simple que possible. Je ne suis pas un programmeur d'expérience, donc je ne connais pas la terminologie exacte que je devrais utiliser. –
Ne vous inquiétez pas, c'est vraiment simple. Et la terminologie est simple: il y a un widget ScreenManager qui ne peut contenir qu'un seul écran. Ensuite, il y a Screen qui peut contenir tous les widgets que vous avez déjà. Regardez quelques [exemples] (https://kivy.org/docs/api-kivy.uix.screenmanager.html#basic-usage). Vous ne devrez pas changer de code, à peu près 10-15 lignes. Répondre lorsqu'il est bloqué. –
Merci. Je suppose que je vais essayer. Peut-être que cela m'aidera à rendre le programme plus avancé pour mon prochain semestre. –