from __future__ import print_function from PySide import QtGui, QtCore class Player(QtGui.QWidget): DEFAULT_PLAYERS = [ ("Foo", QtGui.QColor(255, 0, 0)), ("Bar", QtGui.QColor(0, 255, 0)), ("Baz", QtGui.QColor(0, 0, 255)), ("Blubb", QtGui.QColor(0, 255, 255)), ("Murr", QtGui.QColor(255, 0, 255)), ] def __init__(self, name, color, points=0, parent=None): super(Player, self).__init__(parent) self.name = name self.color = color self.points = points self.setup_gui() def setup_gui(self): self.layout = QtGui.QVBoxLayout() self.name_label = QtGui.QLabel(self.name) self.name_label.setStyleSheet("QLabel { font-size: 40px; background-color: %s; color: white; }" % (self.color.name(),)) self.layout.addWidget(self.name_label) self.points_label = QtGui.QLabel(str(self.points)) self.points_label.setStyleSheet("QLabel { font-size: 40px;}") self.layout.addWidget(self.points_label, alignment=QtCore.Qt.AlignRight) self.setLayout(self.layout) def change_name(self, new_name): self.name = new_name self.name_label.set_text(new_name) def add_points(self, amount): self.points += amount self.points_label.set_text(str(self.points)) @classmethod def gen_player(clazz, num): if num > len(clazz.DEFAULT_PLAYERS): raise ValueError("You tried to generate too many players") return clazz(*clazz.DEFAULT_PLAYERS[num-1])