AttributeError: объект «функция» не имеет атрибута «я»

У меня есть файл графического интерфейса, и я разработал его с помощью qtdesigner, и есть еще один файл py. Я пытался изменить имя кнопки или пытался добавить элемент в listwidget, но я этого не сделал. Я получил сообщение об ошибке.

Мои коды;

from gui import Ui_mainWindow
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
import main


class Music(QtWidgets.QMainWindow, Ui_mainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.search_button.clicked.connect(self.searchbutton)

    def searchbutton(self):
        base = main.Main()
        self.url = base.search(self.search_box.text())
        self.dict = base.get_data(self.url)
        print(self.dict)
        for i in self.dict:
        self.setupUi.self.listWidget.addItem(i)


app = QtWidgets.QApplication(sys.argv)
gui = Music()
gui.show()
sys.exit(app.exec_())

и gui.py

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_mainWindow(object):
    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.resize(413, 613)
        mainWindow.setMinimumSize(QtCore.QSize(413, 613))
        mainWindow.setMaximumSize(QtCore.QSize(413, 613))
        mainWindow.setAutoFillBackground(False)
        self.centralwidget = QtWidgets.QWidget(mainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.musics_frame = QtWidgets.QFrame(self.centralwidget)
        self.musics_frame.setGeometry(QtCore.QRect(-1, 49, 411, 441))
        self.musics_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.musics_frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.listWidget = QtWidgets.QListWidget(self.musics_frame)
        self.listWidget.setGeometry(QtCore.QRect(10, 10, 391, 421))
        self.listWidget.setIconSize(QtCore.QSize(5, 5))
        self.listWidget.setGridSize(QtCore.QSize(5, 5))
        self.listWidget.setViewMode(QtWidgets.QListView.IconMode)
        self.listWidget.setObjectName("listWidget")
        #  ....
        #  ....
        #  ....

и мое сообщение об ошибке

  File "/home/yavuz/Genel/youtube-sounds/music.py", line 19, in searchbutton
    self.setupUi.self.listWidget.addItem(i)
    AttributeError: 'function' object has no attribute 'self'

person yunver    schedule 03.02.2016    source источник
comment
self.setupUi является методом и не имеет self. Я не человек Qt, поэтому не могу сказать, что вы должны делать вместо этого.   -  person tdelaney    schedule 03.02.2016


Ответы (1)


Когда вы используете класс пользовательского интерфейса в качестве миксина, все виджеты из Qt Designer будут добавлены как атрибуты экземпляра класса Music. Итак, вы просто хотите:

    self.listWidget.addItem(i)

PS: и установите размер значка/сетки на что-то разумное (например, 32 x 32), иначе элементы списка будут слишком маленькими, чтобы их можно было увидеть.

person ekhumoro    schedule 03.02.2016
comment
Спасибо за ответ, но на этот раз элементы не добавились в qlistwidget. И ошибки нет. - person yunver; 03.02.2016
comment
@юнвер. Это должно быть потому, что в self.dict ничего нет. - person ekhumoro; 03.02.2016
comment
нет, в self.dict есть имена и ссылки. Я запускаю свое приложение, и я написал специальное имя в Qlineedit, а затем нажал кнопку поиска, после чего self.dict имеет имена и ссылки, но не добавил его в Qlistwidget. @ekhumoro - person yunver; 03.02.2016
comment
другой пример, я создал другой словарь, например, словарь = {один: 1, два: 2, три: 3}, и я использую его, но он не добавил QlistWidget снова. Ошибок нет. - person yunver; 03.02.2016
comment
@юнвер. Пожалуйста, проверьте свой код более внимательно: см. мой обновленный ответ. - person ekhumoro; 03.02.2016