Python :: Aufgabe #175 :: Lösung #3
3 Lösungen
#175
Mischen von Spielkarten
Anfänger - Python
von hollst
- 14.01.2018 um 16:42 Uhr
Man schreibe eine GUI-Anwendung, die einen 52er Kartensatz mischt und die entstandene Reihenfolge anzeigt (BILD 2).
Die Anwendung soll zwei Befehlsknöpfe haben: MISCHEN und RESET. Mit RESET soll die Default-Reihenfolge angezeigt werden (BILD 1).
Einen Satz von Image-Dateien der Spielkarten könnt ihr z. B. unter http://www.nongnu.org/cardpics/cardpics.en.html herunterladen und darüber frei verfügen, sofern ihr eure Lösung nicht für kommerzielle Zwecke vermarkten wollt.
Die Anwendung soll zwei Befehlsknöpfe haben: MISCHEN und RESET. Mit RESET soll die Default-Reihenfolge angezeigt werden (BILD 1).
Einen Satz von Image-Dateien der Spielkarten könnt ihr z. B. unter http://www.nongnu.org/cardpics/cardpics.en.html herunterladen und darüber frei verfügen, sofern ihr eure Lösung nicht für kommerzielle Zwecke vermarkten wollt.
#3
von Gisbert5020 (3120 Punkte)
- 11.06.2018 um 09:50 Uhr
import sys
import random
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QLabel, QSpacerItem,\
QGridLayout, QHBoxLayout, QVBoxLayout, QSizePolicy
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
LISTE = []
SORTLISTE=[]
class Fenster(QWidget):
def __init__(self, parent=None):
super(Fenster, self).__init__(parent)
self.kartenLaden()
self.initUI()
def initUI(self):
self.hlayout = QHBoxLayout()
self.glayout = QGridLayout()
self.glayout.setContentsMargins(5, 5, 5, 5)
self.glayout.setSpacing(3)
self.vlayout = QVBoxLayout()
self.label =[]
for i in range(52):
self.label.append(QLabel(self))
self.label[i].setObjectName('label'+str(i))
myPixmap = QPixmap(SORTLISTE[i])
self.label[i].setPixmap(myPixmap)
self.label[i].setScaledContents(True)
self.label[i].setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
j = i//13
k = i%13
self.glayout.addWidget(self.label[i],j,k)
self.sortieren = QPushButton("Karten sortieren")
self.sortieren.setFixedWidth(100)
self.vlayout.addWidget(self.sortieren)
self.mischen = QPushButton(" Karten mischen ")
self.mischen.setFixedWidth(100)
self.vlayout.addWidget(self.mischen)
self.spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.vlayout.addItem(self.spacerItem)
self.hlayout.addLayout(self.glayout)
self.hlayout.addLayout(self.vlayout)
self.setLayout(self.hlayout)
self.sortieren.clicked.connect(self.kartenSortieren)
self.mischen.clicked.connect(self.kartenMischen)
def kartenLaden(self):
for i in range(56):
if i == 10 or i==24 or i==38 or i==52:
continue
if i < 10:
LISTE.append('cardpics/' + '0' + str(i) + '.png')
else:
LISTE.append('cardpics/' + str(i) + '.png')
SORTLISTE.extend(LISTE[0:26])
SORTLISTE.extend(LISTE[39:52])
SORTLISTE.extend(LISTE[26:39])
def kartenSortieren(self):
for i in range(52):
myPixmap = QPixmap(SORTLISTE[i])
self.label[i].setPixmap(myPixmap)
def kartenMischen(self):
random.shuffle(LISTE)
for i in range(52):
myPixmap = QPixmap(LISTE[i])
self.label[i].setPixmap(myPixmap)
if __name__ == '__main__':
app = QApplication(sys.argv)
fenster=Fenster()
fenster.show()
app.exec_()
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
