Помогите пожалуйста. А то даже не представляю почему питон не берет из списка повторяющиеся значения. И еще вопрос. Если я в классе QWidget прописываю через сетшитстайл бекграунд, то картинка почему то не отображается. Зато в диалоговом окне беграунд у Qwidget отображается… Почему так происходит?
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QPushButton, QApplication, QVBoxLayout, QWidget, QDialog, QDialogButtonBox, \
QTableWidget, QTableWidgetItem
from PyQt5.QtCore import Qt
class List(QDialog):
def __init__(self):
super().__init__()
self.list = [('list1', 1, 2, 1, 0), ('list2', 0, 2, 3, 0), ('list3', 1, 3, 3, 0), ('list4', 2, 2, 1, 0)]
self.setupUi()
def setupUi(self):
self.resize(540, 500)
self.image = QWidget()
self.image.setMinimumSize(540, 200)
self.image.setStyleSheet("background-image: url(D:/gui/img/hall100.jpg); background-attachment: fixed")
self.buttonBox = QDialogButtonBox()
self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok)
self.buttonBox.setCenterButtons(True)
self.table = QTableWidget()
self.table.setRowCount(len(self.list))
self.table.setColumnCount(5)
vbox = QVBoxLayout()
vbox.addWidget(self.table)
vbox.addWidget(self.image)
vbox.addWidget(self.buttonBox)
self.setLayout(vbox)
self.setModal(True)
i = 0
for item in self.list:
for atr in item:
print(item)
n = item.index(atr)
if n == 4 and atr == 0:
self.butt = QPushButton('+')
self.butt.clicked.connect(self.ing)
self.table.setCellWidget(i, n, self.butt)
elif n == 0:
atribut = QTableWidgetItem(atr)
atribut.setFlags(Qt.ItemIsEnabled | Qt.ItemIsUserCheckable)
atribut.setTextAlignment(Qt.AlignCenter)
self.table.setItem(i, n, atribut)
atribut.setCheckState(Qt.Checked)
else:
atribut = QTableWidgetItem(str(atr))
atribut.setFlags(Qt.ItemIsEnabled)
atribut.setTextAlignment(Qt.AlignCenter)
self.table.setItem(i, n, atribut)
i += 1
self.buttonBox.accepted.connect(self.acept_dialog)
self.buttonBox.rejected.connect(self.reject_dialog)
def acept_dialog(self):
choosnames = []
item = self.table.item
for row in range(self.table.rowCount()):
if item(row, 0).checkState() == Qt.Checked:
nam = item(row, 0).text()
choosnames.append(nam)
print(choosnames)
self.close()
def reject_dialog(self):
self.close()
def ing(self):
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = List()
ex.show()
app.exec_()