und zwar habe ich 2 Probleme:
1. wie kann ich die Abstände der Buttons im Grid verändern ?
// setSpacing und setHorizontal / Vertical .. habe ich schon probiert
2. wie kann ich auf einzelne Buttons aus dem Grid zugreifen ?
#todo wie auf buttons im Grid zugreifen
#todo wenn button aus grid gedrückt setze diesen / x-1 / x+1 /y-1 /y+1 auf black
#todo wenn button schon schwarz setze ihn auf weiß
Ich muss dazu sagen ich habe noch nie mit PyQt gearbeitet da ich Anwendungen bisher immer mit Java(FX) geschrieben habe.
Ich wäre für jede Hilfe dankbar falls es im bisherigen Code Fehler bzw. unsauberen Code gibt wäre ich für jeden Hinweis ebenfalls dankbar !
MfG Felix
Hier mein bisheriger Code:
Code: Alles auswählen
import sys
import subprocess
from PyQt5.QtWidgets import (QWidget, QGridLayout, QPushButton, QApplication, )
class basicWindow(QWidget, QGridLayout):
def __init__(self):
super().__init__()
self.setWindowTitle('Game')
button1 = QPushButton("3 x 3", self)
button1.move(95, 30)
button1.setStyleSheet("background-color: yellow")
button1.clicked.connect(self.button1clicked)
button2 = QPushButton("4 x 4", self)
button2.move(245, 30)
button2.setStyleSheet("background-color: yellow")
button2.clicked.connect(self.button2clicked)
button3 = QPushButton("Restart", self)
button3.move(650, 30)
button3.setStyleSheet("background-color: yellow")
button3.clicked.connect(self.button3clicked)
def button1clicked(self):
grid_layout = QGridLayout()
self.setLayout(grid_layout)
for x in range(3):
for y in range(3):
button = QPushButton()
button.setFixedSize(80, 80)
button.setStyleSheet("background-color: white")
grid_layout.addWidget(button, x, y)
button.clicked.connect(self.printcolor)
def button2clicked(self):
grid_layout = QGridLayout()
self.setLayout(grid_layout)
for x in range(4):
for y in range(4):
button = QPushButton()
button.setFixedSize(80, 80)
button.setStyleSheet("background-color: white")
grid_layout.addWidget(button, x, y)
def printcolor(self, button):
button.setStyleSheet("background-color: black")
#todo wie auf buttons im Grid zugreifen
#todo wenn button aus grid gedrückt setze diesen / x-1 / x+1 /y-1 /y+1 auf black
#todo wenn button schon schwarz setze ihn auf weiß
def button3clicked(self):
self.close()
subprocess.call("python" + " game.py", shell=True)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = basicWindow()
window.setStyleSheet("background-color: green")
window.resize(800, 800)
window.show()
sys.exit(app.exec_())