Форум сайта python.su
Создаю Чекбоксы в виде словаря и присваиваю им значения. Проблема в том, что если делаю их очень много, они не влезают в окно программы, для этого я хочу создать listWidget, чтобы можно было
просматривать их, но уже как 3 день борюсь с этим и ничего не выходит.
import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox from PyQt5.QtWidgets import QMainWindow, QLabel, QCheckBox, QDesktopWidget from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QVBoxLayout from PyQt5.QtWidgets import * from PyQt5.QtCore import QCoreApplication class Base(QtWidgets.QWidget): def __init__(self): super(Base, self).__init__() self.startUW() def startUW(self): self.vbox = QtWidgets.QVBoxLayout() self.checkboxItem() self.vbox.addStretch(1) self.lab = QtWidgets.QLabel("Выберите Пункт", self) button = QPushButton("Show", self) button.clicked.connect(self.showItem) button.resize(button.sizeHint()) button.move(800, 550) button2 = QPushButton("Отмена", self) button2.clicked.connect(self.showItem) button2.resize(button.sizeHint()) button2.move(880, 550) self.vbox.addWidget(self.lab, 3) self.setWindowTitle("My_first_programm") self.setWindowIcon(QtGui.QIcon('pythonlogo.png')) self.setGeometry(50, 50, 1000, 600) self.setLayout(self.vbox) ## Вот тут объявляю listWidget self.listWidget = QtWidgets.QListWidget(self.vbox) self.listWidget.setObjectName("listWidget") self.horizontalLayout.addWidget(self.listWidget) self.show() def checkboxItem(self): array = ["Пунтк 1", "Пункт 2", "Пункт 3", "Пункт 4"] self.check = [] index = 0 for item_name in array: self.check.append(QtWidgets.QCheckBox(item_name, self)) self.vbox.addWidget(self.check[index], index) index += 1 ## А тут делаю так, чтобы он отображал у меня все сгенерированные чекбоксы self.listWidget.addItem(array) ## выдает ошибку : 'Base' object has no attribute 'listWidget' Помогите мне довести до ума это дело. def showItem(self): values = [1,2,3,4] sum_of_values = 0 index = 0 while index != 4: if self.check[index].isChecked(): sum_of_values += values[index] index += 1 if sum_of_values > 7: self.lab.setText('Сообщение №1') else: self.lab.setText('Сообщение №2') if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Base() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
Офлайн
ashimanoтак его действтельно нет, вот ваш же кусок кодаashimano
## выдает ошибку : ‘Base’ object has no attribute ‘listWidget’ Помогите мне довести до ума это дело.
def startUW(self): self.vbox = QtWidgets.QVBoxLayout() self.checkboxItem() ..... бла-бла-бла, какйто код.. ## Вот тут объявляю listWidget self.listWidget = QtWidgets.QListWidget(self.vbox) ..... еще код def checkboxItem(self): ....... ## А тут делаю так, чтобы он отображал у меня все сгенерированные чекбоксы self.listWidget.addItem(array) ## выдает ошибку : 'Base' object has no attribute 'listWidget' Помогите мне довести до ума это дело.
[code python][/code]
Отредактировано PEHDOM (Янв. 7, 2018 17:36:08)
Офлайн