Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 11, 2019 16:01:52

rami
Зарегистрирован: 2018-01-08
Сообщения: 280
Репутация: +  71  -
Профиль   Отправить e-mail  

Заполнить QComboBox из базы

Понял, почему ругается на ‘MyWin’ object has no attribute ‘combo_3’. Вы не сделали что сказал Rodegast, в нужном месте.


         combo_3 = QComboBox(self)     #  <—— заменить combo_3 на self.combo_3
        combo_3.move(100, 90)         #  <—— заменить combo_3 на self.combo_3
        combo_3.resize (130, 22)      #  <—— заменить combo_3 на self.combo_3
        combo_3.activated[str].connect(self.onActivated3)   #  <—— заменить combo_3 на self.combo_3

Убрать self.combo_3 = QComboBox(self) из функции def combo3

Офлайн

#2 Окт. 11, 2019 16:09:24

Yonga
Зарегистрирован: 2018-11-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Заполнить QComboBox из базы

Спасибо, Rami, но к сожалению ваши рекомендации не помогли. Сам список создается но комбобокс пустой.Будто код не реагирует на функцию:

 for row in combo3list:
            self.combo_3.addItem(row)

Офлайн

#3 Окт. 11, 2019 16:21:52

rami
Зарегистрирован: 2018-01-08
Сообщения: 280
Репутация: +  71  -
Профиль   Отправить e-mail  

Заполнить QComboBox из базы

Комбобокс пустой потому, что вы переопределяете (непонятно зачем) его в функции def combo3 — делаете из него “пустышку”. Вы наверно не обратили внимания на мой предыдущий ответ. Полный код:

 import sys
import sqlite3
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import QCoreApplication
 
 
class MyWin(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        #comboBox1
        self.lb8 = QLabel("ComboBox_1", self)
        self.lb8.move(30, 50)
 
        self.lbl = QLabel(self)
        self.lbl.move(250, 52)
 
        combo = QComboBox(self)
        combo.move(110, 50)
        combo.addItems(["","Raion1", "Raion2","Raion3","Raion4","Raion5"])
        combo.resize (130, 22)
        combo.activated[str].connect(self.onActivated)
        combo.activated[str].connect(self.selected)
        combo.activated[str].connect(self.combo3)
 
        #comboBox3
        self.lb10 = QLabel("ComboBox_3", self)
        self.lb10.move(30, 90)
 
        self.lb3 = QLabel(self)
        self.lb3.move(250, 90)
 
        self.combo_3 = QComboBox(self)
        self.combo_3.move(110, 90)
        self.combo_3.resize (130, 22)
        self.combo_3.activated[str].connect(self.onActivated3)
 
        #Close button
        qbtn = QPushButton('Close', self)
        qbtn.clicked.connect(self.close)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(450, 450)
 
        #Basic Window
        self.resize(600, 520)
        self.center()
        self.setWindowTitle('Center')
        self.setWindowTitle('Locality')
        self.setWindowIcon(QIcon('port.png'))
        self.show()
 
        #qLabel_1
    def onActivated(self, text):
        self.lbl.setText(text)
        self.lbl.adjustSize()
 
        #qLabel_3
    def onActivated3(self, text):
        self.lb3.setText(text)
        self.lb3.adjustSize()
 
        #selected raion
    def selected(self, text):
        raion = text
 
    def combo3(self, text):
        conn = sqlite3.connect ("Locality.db")
        cursor = conn.cursor()
        cursor.execute ("""select locality from Locality where raion=?""",(text,))
        result = cursor.fetchall()
        conn.close()                      #добавил закрытие
        self.combo_3.clear()              #добавил очистку виджета
        combo3list = [row[0] for row in result]
        print('list:', combo3list)
        for row in combo3list:
            self.combo_3.addItem(row)
 
        #main window
    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())
 
    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Message', "Are you sure to quit?",
                                     QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    my = MyWin()
    sys.exit(app.exec_())

Офлайн

#4 Окт. 11, 2019 17:04:17

Yonga
Зарегистрирован: 2018-11-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Заполнить QComboBox из базы

Спасибо, большое.

Офлайн

#5 Окт. 12, 2019 07:47:56

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Заполнить QComboBox из базы

Уважаемые спецы.
Прошу помощи.
———————-
Есть текстовый файл. В нём много ссылок на ютуб.
Подскажите скрипт для быстрой проверки всех ссылок на ютуб. Просто нужно в списке отметить неработающие ссылки.
Заранее спасибо.

Офлайн

#6 Окт. 12, 2019 10:50:35

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Заполнить QComboBox из базы

Уважаемые спецы.
Прошу помощи.
———————-
Есть текстовый файл. В нём много ссылок на ютуб.
Подскажите скрипт для быстрой проверки всех ссылок на ютуб. Просто нужно в списке отметить неработающие ссылки.
Заранее спасибо.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version