ich möchte gerne einen Turnier Generator erstellen.
Hierzu soll zuerst nach allen Namen der Mannschaften gefragt werden und diese anschließend dann auf 4 Gruppen aufgeteilt.
Das aufteilen in die 4 Gruppen hat ohne mein Kivy Framework noch geklappt, wenn ich jetzt jedoch den Code in meine Kivycode einfüge, erhalte ich den Fehler "list index out of range"
Hier mein Code:
Code: Alles auswählen
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.clock import Clock
from kivy.uix.popup import Popup
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.properties import ObjectProperty
import random
from klassen import Team
import sqlite3
all_teams = []
anzahl_teams = 5
temp_list = []
zw_dict = {}
Group_A = {}
Group_B = {}
Group_C = {}
Group_D = {}
def listconverttodict():
pick = random.choice(all_teams[-1])
zw_dict[pick] = Team(name = pick)
all_teams.remove(pick)
class First_Screen(Widget):
def __init__(self, **kwargs):
super().__init__(**kwargs)
Clock.schedule_once(self.switch_to_next_view, 0)
def switch_to_next_view(self, *args):
app.screen_manager.current ="Second_Screen"
class Second_Screen(Widget):
def __init__(self, **kwargs):
super().__init__(**kwargs)
Group_A = {}
teaminput = ObjectProperty(None)
teams_already_added = ObjectProperty(None)
def button_pressed(self, *args):
if (self.teaminput.text in all_teams):
self.popup_double_name(object)
all_teams.remove(self.teaminput.text)
if self.teaminput.text == "":
self.popup_name_forgotten(object)
if len(all_teams) == 0:
self.popup_name_forgotten(object)
else:
all_teams.append(self.teaminput.text)
if len(all_teams) >= anzahl_teams:
self.ids.move_to_group.disabled = False
self.teaminput.text = ""
print(all_teams)
ausgabe = "Bereits vergebene Teamnamen:"
for einzel_teams in all_teams:
ausgabe = f'{ausgabe} \n {einzel_teams}'
self.ids.teams_already_added.text = f'{ausgabe}'
def popup_name_forgotten(self, object):
popup = Popup(title='Teamnamen vergessen',
content=Label(text="Ups! Du hast wohl vergessen einen Teamnamen einzugeben!"),
size_hint=(None, None), size=(400, 400))
popup.open()
def popup_double_name(self, object):
popup = Popup(title='Sorry, da war wohl jemand schneller!',
content=Label(text="Der Name ist bereits vergeben!"),
size_hint=(None, None), size=(400, 400))
popup.open()
def teamstogroup(self):
print(all_teams)
for single in range(anzahl_teams):
if len(Group_A) < 4:
listconverttodict()
Group_A.update(zw_dict)
zw_dict.clear()
if len(Group_B) < 4:
listconverttodict()
Group_B.update(zw_dict)
zw_dict.clear()
if len(Group_C) < 4:
listconverttodict()
Group_C.update(zw_dict)
zw_dict.clear()
if len(Group_D) < 4:
listconverttodict()
Group_D.update(zw_dict)
zw_dict.clear()
def switch_to_third_screen(self, *args):
app.screen_manager.current = "Third_Screen"
class Third_Screen(Widget):
pass
class Turnier_Generator(App):
def build(self):
self.icon = "icon.png"
self.screen_manager = ScreenManager()
self.first_screen = First_Screen()
screen = Screen(name="First_Screen")
screen.add_widget(self.first_screen)
self.screen_manager.add_widget(screen)
self.second_screen = Second_Screen()
screen = Screen(name="Second_Screen")
screen.add_widget(self.second_screen)
self.screen_manager.add_widget(screen)
self.third_screen = Third_Screen()
screen = Screen(name="Third_Screen")
screen.add_widget(self.third_screen)
self.screen_manager.add_widget(screen)
return self.screen_manager
if __name__ == "__main__":
app = Turnier_Generator()
app.run()
Code: Alles auswählen
<First_Screen>
FloatLayout:
canvas.before:
Rectangle:
size: root.width, root.height
pos: self.pos
source: "background.png"
Label:
id: welcome_label
text: "Willkommen zum Turnier Generator!"
font_size: 32
size: self.size
bold: True
pos: root.width / 2 -40, root.height / 2 + 150
Label:
id: go_on_label
text: "In 5 Sekunden gehts weiter"
font_size: 14
color: "black"
text_size: self.size
pos: root.center_x - (self.size[0]/2), root.center_y - 200
<Second_Screen>
teaminput:teaminput
FloatLayout:
canvas.before:
Rectangle:
size: root.width, root.height
pos: self.pos
source: "background.png"
Label:
text: "Gib bitte unten die Teamnamen ein"
font_size: 32
pos: root.width / 2 - 40,root.height - 200
Label:
id: teams_already_added
text: "Bereits vergebene Teamnamen werden hier angezeigt..."
font_size: 16
pos: root.width / 2 - 40, root.height - 400
size_hint: (0.5,0.1)
Button:
id: move_to_group
text: "Weiter zu den Gruppen"
disabled: True
on_press:
root.switch_to_third_screen()
root.teamstogroup()
BoxLayout:
id: inner_box
pos: root.width / 6, root.height -500
size_hint: 6,0.5
TextInput:
id: teaminput
hint_text: "Gib hier die Teamnamen ein"
multiline: False
background_color: "black"
foreground_color: "white"
cursor_color: "white"
Button:
text: "Teamnamen bestätigen"
size_hint: 0.5,1
on_press:
root.button_pressed()
<Third_Screen>
FloatLayout:
canvas.before:
Rectangle:
size: root.width, root.height
pos: self.pos
source: "background.png"
BoxLayout:
orientation: "vertical"
rows: 3
size_hint: 3, 1.5
pos: root.width / 2 - self.size[0]/2, root.height / 2 + self.size[0]/2
Button:
text: "Gruppe A"
color: "black"
size_hint: 1,0.1
BoxLayout:
orientation: "horizontal"
cols: 3
size_hint: 1,0.1
Button:
text: "Platz"
color: "black"
size_hint: 0.25,1
Button:
text: "Name"
color: "black"
size_hint: 1,1
Button:
text: "Punkte"
color: "black"
size_hint: 0.25,1
BoxLayout:
orientation: "horizontal"
cols: 3
size_hint: 1,0.5
BoxLayout:
orientation: "vertical"
rows: 4
size_hint: .25 , 1
Button:
text: "1"
Button:
text: "2"
Button:
text: "3"
Button:
text: "4"
BoxLayout:
orientation: "vertical"
rows: 4
size_hint: 1 , 1
Button:
id: name_group_a_t1
text: "Team1"
Button:
id: name_group_a_t2
text: "Team2"
Button:
id: name_group_a_t3
text: "Team3"
Button:
id: name_group_a_t4
text: "Team4"
BoxLayout:
orientation: "vertical"
rows: 4
size_hint: .25 , 1
Button:
id: points_group_a_t1
text: "2"
Button:
id: points_group_a_t2
text: "2"
Button:
id: points_group_a_t3
text: "2"
Button:
id: points_group_a_t4
text: "2"
Vielen Dank
Viele Grüße
selbststudium