Hinweis: Ich bin kein Programmierer und kenne nicht die genaue Terminologie, die ich verwenden sollte. Dies ist ein grundlegendes Programm und ich versuche nicht, wörtliche "kivy screens" oder den kivy Screen Manager zu verwenden.Python - Wie füge ich einen zweiten "Bildschirm" zu meiner kivy-Anwendung hinzu?
Ich habe stundenlang auf Google suchen versucht, dieses Problem zu lösen, und ich komme kurz. Ich habe ein Python Kivy Programm. Ich habe den Startbildschirm erstellt. Wenn der Benutzer auf ein bestimmtes Spiel klickt, möchte ich, dass der Bildschirm alle Daten auf dem ersten Bildschirm löscht und dann Schaltflächen und Beschriftungen auf dem Bildschirm platziert. Fast wie ein "neuer" Bildschirm. Ich habe es derzeit, wo es den Bildschirm löscht, wenn ein Benutzer ein Spiel auswählt, aber wenn ich versuche, Schaltflächen zu diesem Bildschirm hinzuzufügen, füllen sie auf dem Hauptbildschirm.
Das ist mein Python-Code:
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()
Hier ist meine .kv Datei:
<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
Wenn der Benutzer auf Spiel klickt 1, würde ich es gerne, um das Spiel 1 Klasse zu springen aber es kann nicht, weil das Programm nicht weiß, dass es noch existiert. Ich bin mir nicht sicher, wie ich das beheben soll.
Ich bin nicht wörtliche Bildschirme zu verwenden versuchen. Ich muss nur ein Basisprogramm machen und es so einfach wie möglich halten. Ich bin kein Erfahrungsprogrammierer, deshalb kenne ich nicht die genaue Terminologie, die ich verwenden sollte. –
Mach dir keine Sorgen, es ist wirklich einfach. Und die Terminologie ist einfach: Es gibt ein ScreenManager-Widget, das nur einen Bildschirm enthalten kann. Dann gibt es Bildschirm, der alle Widgets enthalten kann, die Sie bereits haben. Sehen Sie sich einige [Beispiele] an (https://kivy.org/docs/api-kivy.uix.screenmanager.html#basic-usage). Sie müssen keinen Code ändern, nur etwa 10-15 Zeilen. Antworten, wenn feststecken. –
Danke. Ich nehme an, ich werde es versuchen. Vielleicht wird es mir helfen, das Programm für mein nächstes Semester weiter zu entwickeln. –