Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 6, 2018 16:17:10

ashimano
Зарегистрирован: 2016-06-07
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

listWidget и checkbox'ы PyQt5

Создаю Чекбоксы в виде словаря и присваиваю им значения. Проблема в том, что если делаю их очень много, они не влезают в окно программы, для этого я хочу создать 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_())

Офлайн

#2 Янв. 7, 2018 17:35:51

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

listWidget и checkbox'ы PyQt5

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' Помогите мне довести до ума это дело. 
на момент вызова self.checkboxItem() self.listWidget-а еще не существует, вы его создадите спустя десяток строк кода..



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Янв. 7, 2018 17:36:08)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version