С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/35: Рейтинг темы: голосов - 35, средняя оценка - 4.71
31 / 27 / 5
Регистрация: 08.11.2019
Сообщений: 58
PySide

'bool' object has no attribute 'ui'

05.11.2020, 16:14. Показов 6804. Ответов 11

Студворк — интернет-сервис помощи студентам
У меня проблема в том, что при запуске программы и нажатии на соответствующую кнопку, у меня вылезает ошибка, что якобы булевый объект не имеет атрибута 'ui'. Хотя при запуске данной страницы отдельно, все нормально работает.
Traceback (most recent call last):
File "C:\Users\pc\PycharmProjects\OMGWHY\app_ functions.py", line 38, in start
if len(self.ui.lineEdit_2.text()) > 5:
AttributeError: 'bool' object has no attribute 'ui'
Первый скриншот - main.py
Второй - app_functions



0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2020, 16:14
Ответы с готовыми решениями:

AttributeError: 'bool' object has no attribute 'setText'
Я понять не могу, что ему нет так?Почему у него тип bool? import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton ...

Attribute error 'tuple' object has no attribute 'employee_id'
Задача у меня такая собрать данные из базы и перевести в формат json. Использую Oracle. Если написать номера столбцов вручную, то все...

Object has no attribute
Добрый день,пересаживаюсь с с#, вообще не вдупляю на что ругается. Объясните import sys import time import os from PyQt5 import...

11
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
05.11.2020, 16:20
Smolga2110, скрины такие даже правилами запрещены, нежели сложно код скопировать?

навскидку вон тебе в 33 строке подчеркивает self, может прочтешь почему?

Добавлено через 1 минуту
как гуи (класс маленькой буквы? садись, два!) из второго модуля связан с первым?
1
31 / 27 / 5
Регистрация: 08.11.2019
Сообщений: 58
05.11.2020, 16:22  [ТС]
Да, прошу прощения, протупил..
Скрины удалю, только надо 5 мин подождать из за задержки
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
05.11.2020, 16:27
Smolga2110, а благодарность за ответ зачем поставил, проблема то не решена? )))
0
31 / 27 / 5
Регистрация: 08.11.2019
Сообщений: 58
05.11.2020, 16:32  [ТС]
За свою оплошность )
И можно спросить, (да, я немного глупый) как можно связать эти два класса
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
05.11.2020, 16:35
Цитата Сообщение от Smolga2110 Посмотреть сообщение
как можно связать эти два класса
ну у меня есть только очевидные ответы о импорте и создании объекта, но полагаю в ГУИ это все немного по своему работает, лучше позвать спецов по гуям.
kapbepucm, DmFat, я призывая вас!
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.11.2020, 16:53
Smolga2110,

Python
1
from app_mudularis import *
Никогда так не делай.
По сабжу: про твой ui ничерта непонятно, потому что нет кода и потому что *.
0
31 / 27 / 5
Регистрация: 08.11.2019
Сообщений: 58
05.11.2020, 16:58  [ТС]
main.py -----------
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import sys
import platform
 
from PySide2.QtCore import (QCoreApplication, QPropertyAnimation, QDate, QDateTime, QMetaObject, QObject, QPoint, QRect,
                            QSize, QTime, QUrl, Qt, QEvent)
from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont, QFontDatabase, QIcon, QKeySequence,
                           QLinearGradient, QPalette, QPainter, QPixmap, QRadialGradient)
from PySide2.QtWidgets import *
 
from app_modularis import *
 
 
class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
 
        UIFunctions.removeTitleBar(True)
 
        self.download_folder = None
        self.ui.pushButton.clicked.connect(Gui.get_folder)
        self.ui.pushButton_2.clicked.connect(Gui.start)
        self.mythread = downloader()
 
        self.setWindowTitle('Main Window - Python Base')
        UIFunctions.labelTitle(self, 'Основное Окно - Загрузчик')
        UIFunctions.labelDescription(self, 'Описание')
 
        startSize = QSize(1000, 720)
        self.resize(startSize)
        self.setMinimumSize(startSize)
 
        self.ui.btn_toggle_menu.clicked.connect(lambda: UIFunctions.toggleMenu(self, 220, True))
 
        self.ui.stackedWidget.setMinimumWidth(20)
        UIFunctions.addNewMenu(self, "ГЛАВНАЯ", "btn_home", "url(:/16x16/icons/16x16/cil-home.png)", True)
        UIFunctions.addNewMenu(self, "НОВЫЙ ПОЛЬЗОВАТЕЛЬ", "btn_new_user",
                               "url(:/16x16/icons/16x16/cil-user-follow.png)", True)
        UIFunctions.addNewMenu(self, "YTDownloader", "btn_ytdown",
                               "url(C:/Users/pc/Desktop/OMGDUUUDE/icons/16x16/youtube.png)", True)
        UIFunctions.addNewMenu(self, "ПЛЮХИ НА ПОТОМ", "btn_widgets", "url(:/16x16/icons/16x16/cil-equalizer.png)",
                               False)
 
        UIFunctions.selectStandardMenu(self, "btn_home")
 
        self.ui.stackedWidget.setCurrentWidget(self.ui.page_home)
 
        UIFunctions.userIcon(self, "М.А", "", True)
 
        def moveWindow(event):
            if UIFunctions.returStatus(self) == 1:
                UIFunctions.maximize_restore(self)
 
            if event.buttons() == Qt.LeftButton:
                self.move(self.pos() + event.globalPos() - self.dragPos)
                self.dragPos = event.globalPos()
                event.accept()
 
        self.ui.frame_label_top_btns.mouseMoveEvent = moveWindow
 
        UIFunctions.uiDefinitions(self)
 
        self.ui.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
 
        self.show()
 
    def Button(self):
        btnWidget = self.sender()
 
        if btnWidget.objectName() == "btn_home":
            self.ui.stackedWidget.setCurrentWidget(self.ui.page_home)
            UIFunctions.resetStyle(self, "btn_home")
            UIFunctions.labelPage(self, "Главная")
            btnWidget.setStyleSheet(UIFunctions.selectMenu(btnWidget.styleSheet()))
 
        if btnWidget.objectName() == "btn_new_user":
            self.ui.stackedWidget.setCurrentWidget(self.ui.page_home)
            UIFunctions.resetStyle(self, "btn_new_user")
            UIFunctions.labelPage(self, "Новый Пользователь")
            btnWidget.setStyleSheet(UIFunctions.selectMenu(btnWidget.styleSheet()))
 
        if btnWidget.objectName() == "btn_ytdown":
            self.ui.stackedWidget.setCurrentWidget(self.ui.page_ytdown)
            UIFunctions.resetStyle(self, "btn_ytdown")
            UIFunctions.labelPage(self, "Загрузки")
            btnWidget.setStyleSheet(UIFunctions.selectMenu(btnWidget.styleSheet()))
 
        if btnWidget.objectName() == "btn_widgets":
            self.ui.stackedWidget.setCurrentWidget(self.ui.page_widgets)
            UIFunctions.resetStyle(self, "btn_widgets")
            UIFunctions.labelPage(self, "Всякие Плюхи")
            btnWidget.setStyleSheet(UIFunctions.selectMenu(btnWidget.styleSheet()))
 
    def eventFilter(self, watched, event):
        if watched == self.le and event.type() == QtCore.QEvent.MouseButtonDblClick:
            print("pos: ", event.pos())
 
    def mousePressEvent(self, event):
        self.dragPos = event.globalPos()
        if event.buttons() == Qt.LeftButton:
            print('МЫШЬ: Левая')
        if event.buttons() == Qt.RightButton:
            print('МЫШЬ: Правая')
        if event.buttons() == Qt.MidButton:
            print('МЫШЬ: Колесо')
 
    def resizeEvent(self, event):
        self.resizeFunction()
        return super(MainWindow, self).resizeEvent(event)
 
    def resizeFunction(self):
        print('Высота: ' + str(self.height()) + ' | Длинна: ' + str(self.width()))
 
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    QtGui.QFontDatabase.addApplicationFont('fonts/segoeui.ttf')
    QtGui.QFontDatabase.addApplicationFont('fonts/segoeuib.ttf')
    window = MainWindow()
    sys.exit(app.exec_())
app_functions.py: ----------------------------------------------------------

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import os
import sys
import youtube_dl
from PyQt5 import QtCore, QtGui, QtWidgets
from PySide2 import QtCore, QtGui, QtWidgets
from ui_main import *
from app_modularis import *
 
 
class downloader(QtCore.QThread):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.url = None
 
    def run(self):
        self.mysignal.emit('Процесс скачивания запущен!')
 
        with youtube_dl.YoutubeDL({}) as ydl:
            ydl.download([self.url])
 
        self.mysignal.emit('Процесс скачивания завершен!')
        self.mysignal.emit('finish')
 
    def init_args(self, url):
        self.url = url
 
 
class Gui(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui.setupUi(self)
        self.download_folder = None
        self.ui.pushButton_2.clicked.connect(self.get_folder)
        self.ui.pushButton_3.clicked.connect(self.start)
        self.mythread = downloader()
 
    def start(self):
        if len(self.ui.lineEdit_2.text()) > 5:
            if self.download_folder != None:
                link = self.ui.lineEdit_2.text()
                self.mythread.init_args(link)
                self.mythread.start()
                self.locker(True)
            else:
                QtWidgets.QMessageBox.warning(self, "Ошибка", "Вы не выбрали папку!")
        else:
            QtWidgets.QMessageBox.warning(self, "Ошибка", "Ссылка на видео не указана!")
 
    def get_folder(self):
        self.download_folder = QtWidgets.QFileDialog.getExistingDirectory(self, 'Выбрать папку для сохранения')
        os.chdir(self.download_folder)
 
    def handler(self, value):
        if value == 'finish':
            self.locker(False)
 
        else:
            self.ui.plainTextEdit.appendPlainText(value)
 
    def locker(self, lock_value):
        base = [self.ui.pushButton_2, self.ui.pushButton_3]
 
        for item in base:
            item.setDisabled(lock_value)
app_modularis.py:----------------------------------------

Python
1
2
3
4
5
6
7
8
9
from ui_main import Ui_MainWindow
 
from ui_styles import Style
 
from ui_functions import *
 
from app_functions import *
 
from main import *
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
06.11.2020, 10:20
Лучший ответ Сообщение было отмечено Smolga2110 как решение

Решение

Цитата Сообщение от Smolga2110 Посмотреть сообщение
Python
1
2
3
4
5
6
7
def __init__(self, parent=None):
 super().__init__(parent)
 self.ui.setupUi(self)
 self.download_folder = None
 self.ui.pushButton_2.clicked.connect(self.get_folder)
 self.ui.pushButton_3.clicked.connect(self.start)
 self.mythread = downloader()
app_functions.py:
строка 31 self.ui.setupUi(self)
тут вы обращаетесь к полю .ui класса Gui (self.ui), но при этом ещё нигде его не назначали/обьявляли до этого

Цитата Сообщение от Smolga2110 Посмотреть сообщение
Python
1
2
from PyQt5 import QtCore, QtGui, QtWidgets
from PySide2 import QtCore, QtGui, QtWidgets
определитесь, pyside или всётаки pyqt
1
31 / 27 / 5
Регистрация: 08.11.2019
Сообщений: 58
07.11.2020, 21:31  [ТС]
Спасибо, уже решил проблему, там была загвоздка в кое-чем другом )
0
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 22
15.03.2024, 18:12
В чем была проблема, столкнулся с аналогичной?
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
22.03.2024, 17:10
Цитата Сообщение от Ultimaforsan Посмотреть сообщение
В чем была проблема
обращение в коде к чемуто, что заранее не было описано/определено
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2024, 17:10
Помогаю со студенческими работами здесь

Ошибка object has no attribute 'get'
#бегущая строка from tkinter import * def exit(): #функция выхода sys.exit() def put(): a = text.get() ...

'str' object has no attribute
Здравствуйте. Возникла проблема с вызовом функции. Ошибка такая: 'str' object has no attribute 'getInfoPasient'. Пробовала переименовывать,...

'QuerySet' object has no attribute 'id'
делаю редирект на страницу с созданной статьей после сабмита формы: моель: class Article(models.Model): title =...

'NoneType' object has no attribute
Пытаюсь добавить товар в корзину. Хочу начать с простого. Есть 3 модели: Product, CartItem, Cart. Для начала хочу взять первую корзину...

Object has no attribute 'exec_'
Возникает ошибка (единственная на данный момент): Traceback (most recent call last): File...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru