PyQt5, отображение компоновки GridLayout
Нужно чтобы между объектами компоновки GridLayout отображалась граница:
import random
import sys
from PyQt5.QtWidgets import QWidget, QGridLayout, QLabel, QApplication
app = QApplication(sys.argv)
class TikTakToe(QWidget):
def __init__(self):
super(TikTakToe, self).__init__()
grd = QGridLayout()
for i in range(3):
for j in range(3):
grd.addWidget(QLabel(random.choice(['x', 'o'])), i, j)
self.setLayout(grd)
self.show()
sys.exit(app.exec())
ttt = TikTakToe()
результат выглядит так:
а нужно чтобы было что-то вроде этого:
лучше всего для меня будет предусмотренный метод самого менеджера компоновки, если такой есть. Или что-то другое, не слишком многострочное.
Ответы (2 шт):
Автор решения: denisnumb
→ Ссылка
В цикле, при добавлении QLabel добавьте параметр
QLabel.setStyleSheet('border-style: solid; border-width: 1px; border-color: black;')
Должно получиться что-то вроде этого:
Добавление границ элементов:
label = QLabel(random.choice(['x', 'o']))
label.setStyleSheet('border-style: solid; border-width: 1px; border-color: black;')
grd.addWidget(label, i, j)
Увеличение шрифта:
from PyQt5.QtGui import QFont
label.setFont(QFont('Arial', 26, QFont.Bold))
Убираем расстояние между элементами:
grd.setSpacing(0)
Результат:
Автор решения: S. Nick
→ Ссылка
Мне показалось, что вам вместо QLabel больше подойдет виджет QPushButton
import sys
import random
from PyQt5.QtWidgets import QWidget, QGridLayout, QLabel, QApplication, QPushButton
from PyQt5.QtGui import QFont
class TikTakToe(QWidget):
def __init__(self):
super(TikTakToe, self).__init__()
grd = QGridLayout(self)
grd.setSpacing(0)
for i in range(1,4):
for j in range(1,4):
# grd.addWidget(QLabel(random.choice(['x', 'o'])), i, j)
btn = QPushButton(random.choice(['x', 'o']))
btn.setFixedSize(60, 60)
btn.clicked.connect(lambda ch, text=btn.text(): self.onClick(text))
grd.addWidget(btn, i, j)
grd.setColumnStretch(0, 1)
grd.setColumnStretch(4, 1)
grd.setRowStretch(0, 1)
grd.setRowStretch(4, 1)
def onClick(self, text):
print(text)
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyle('Fusion')
app.setFont(QFont('Arial', 26, QFont.Bold))
w = TikTakToe()
w.show()
sys.exit(app.exec_())



