【发布时间】:2018-03-26 09:05:11
【问题描述】:
程序:首先您必须添加一个名称,然后程序将设置一个初学者(函数“umdie()”),然后屏幕“Wurfelbeginn”将向您显示玩家的姓名和他们的号码. 之后,您单击“我们开始了吗?”按钮。看看谁开始。
现在我的问题是: 我想在弹出窗口中显示类 Variablen 中的变量“Beginner”,但如果我调用该变量没有任何反应,但控制台会显示正确的名称。
我做错了什么?
我的 main.py 代码:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, SlideTransition
from kivy.properties import ObjectProperty, ListProperty, StringProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.uix.popup import Popup
from kivy.core.window import Window
from random import *
class Boxlayout(BoxLayout):
pass
class Textinput(TextInput):
pass
class Variablen():
Spielernamen = []
Beginner = 0
Zweiter = 0
def get_names(self, Namensabfrage):
Name1 = Namensabfrage.name_1.text
Name2 = Namensabfrage.name_2.text
self.Spielernamen.append(Name1)
self.Spielernamen.append(Name2)
print(Variablen.Spielernamen)
def umdie(self, Wurfelbeginn):
if Wurfelbeginn.Würfel1 > Wurfelbeginn.Würfel2:
self.Beginner = self.Spielernamen[0]
self.Zweiter = self.Spielernamen[1]
elif Wurfelbeginn.Würfel1 == Wurfelbeginn.Würfel2:
self.Beginner = self.Spielernamen[0]
self.Zweiter = Variablen.Spielernamen[1]
else:
self.Beginner = self.Spielernamen[1]
self.Zweiter = self.Spielernamen[0]
print(self.Beginner)
print(self.Zweiter)
class Namensabfrage(Screen):
name_1 = ObjectProperty()
name_2 = ObjectProperty()
def save_names(self):
vars = Variablen()
vars.get_names(self)
class Wurfelbeginn(Screen, Variablen):
Spieler1 = StringProperty("")
Spieler2 = StringProperty("")
Würfel1 = randint(1,6)
Würfel2 = randint(1,6)
WürfSp1 = str(Würfel1)
WürfSp2 = str(Würfel2)
def on_pre_enter(self):
self.Spieler1 = str(Variablen.Spielernamen[0] + " würfelt: ")
self.Spieler2 = str(Variablen.Spielernamen[1] + " würfelt: ")
Variablen.umdie(self, Wurfelbeginn)
def open_popup(self):
the_popup = CustomPopup()
the_popup.open()
class CustomPopup(Popup,Variablen):
Beginnertext = StringProperty("")
def on_pre_enter(self):
self.Beginnertext = str(Variablen.Beginner + "fängt an")
print("Hallo")
class Manager(ScreenManager):
namensabfrage = ObjectProperty(None)
wurfelbeginn = ObjectProperty(None)
class ScreensApp(App):
def build(self):
m = Manager(transition=SlideTransition())
return m
if __name__ == "__main__":
ScreensApp().run()
这里是screes.kv:
#:kivy 1.10.0
<Namensabfrage>:
name_1: name1
name_2: name2
Boxlayout:
orientation: 'vertical'
padding: 50
spacing: 50
Label:
text: "gebt hier eure Namen ein"
Textinput:
id: name1
size_hint: (1, .3)
text: ""
multiline: False
Textinput:
id: name2
size_hint: (1, .3)
text: ""
multiline: False
Button:
text: "Bestätigen"
size_hint:(1,.4)
on_press: root.save_names()
Button:
size_hint: (1, .5)
text: "Start"
on_press: root.manager.current = "Screen2"
<Wurfelbeginn>:
Boxlayout:
orientation: 'vertical'
spacing: 20
Button:
text: "Wer beginnt?"
size_hint:(1,.4)
font_size: 20
on_press: root.open_popup()
Label:
text: root.Spieler1
Label:
text: root.WürfSp1
font_size: 30
Label:
text: root.Spieler2
Label:
text: root.WürfSp2
font_size: 30
<CustomPopup>:
size_hint: .5, .5
auto_dismiss: False
title: "Beginner"
BoxLayout:
Label:
text: root.Beginnertext
Button:
text: "schließen"
on_press: root.dismiss()
<Manager>:
id: screen_manager
namensabfrage: Namensabfrage
wurfelbeginn: Wurfelbeginn
Namensabfrage:
id: Namensabfrage
name: "Screen1"
manager: screen_manager
Wurfelbeginn:
id: Wurfelbeginn
name: "Screen2"
manager: screen_manager
【问题讨论】:
标签: python python-3.x kivy kivy-language