Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
30 / 23 / 7
Регистрация: 19.09.2018
Сообщений: 196

Ошибка - QBasicTimer can only be used with threads started with QThread

13.10.2022, 16:47. Показов 2100. Ответов 0

Студворк — интернет-сервис помощи студентам
Почитал о данной ошибке на других форумах, выяснил, что ошибка может быть связана если у элементов нет связи и сборщик мусора их удаляет в случайном порядке. Не пойму в каком месте нет связи элементов или может какая-то другая причина.
Ошибка возникает после закрытия окна, которое было открыто по нажатию кнопки.
В чем может быть проблема?

Основной файл скрипта
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
#!/usr/bin/python3
 
 
 
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QWidget,
                                QApplication, 
                                QDesktopWidget,
                                QGridLayout,
                                QStackedWidget,
                                QTreeWidget,
                                QLabel,
                                )
 
 
sys.dont_write_bytecode = True
 
import mod1
 
 
class Gui(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(800, 600)
        self.setWindowTitle('Main win')
 
        self.add_elements()
        self.set_pos_elements()
        self.move_center()
        self.build_tree(self.tree)
 
    def build_tree(self, parent_item):
        tree_item = mod1.TreeItem(parent_item)
        page = mod1.Page(self)
        index = self.stack.addWidget(page)
        tree_item.setData(0, Qt.UserRole, index)
 
    def add_elements(self):
        self.grid = QGridLayout(self)
        self.tree = QTreeWidget(self)
        self.stack = QStackedWidget(self)
        self.tree.setHeaderHidden(True)
        self.label = QLabel(self)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.hide()
 
    def set_pos_elements(self):
        self.grid.addWidget(self.tree, 0, 0)
        self.grid.addWidget(self.stack, 0, 1)
        self.grid.addWidget(self.label, 0, 0)
 
    def move_center(self):
        fg = self.frameGeometry()
        ac = QDesktopWidget().availableGeometry().center()
        fg.moveCenter(ac)
        self.move(fg.topLeft())
 
    def wait(self, text=''):
        self.label.setText(text)
        self.tree.hide()
        self.stack.hide()
        self.label.show()
        self.showMinimized()
 
    def resume(self):
        self.label.hide()
        self.tree.show()
        self.stack.show()
        self.showNormal()
 
def show_gui():
    app = QApplication([])
    gui = Gui()
    gui.show()
    app.exec()
 
show_gui()

Импортируемый модуль "mod1"
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
#!/usr/bin/python3
 
 
from functools import partial
import subprocess
import threading
from PyQt5.QtWidgets import (QWidget,
                                QGridLayout,
                                QTreeWidgetItem,
                                QGroupBox,
                                QPushButton,
                                )
 
 
class TreeItem(QTreeWidgetItem):
    def __init__(self, parent, text=''):
        QTreeWidgetItem.__init__(self, parent, ['Settings'])
 
class Page(QWidget):
    def __init__(self, main_win, args=[]):
        QWidget.__init__(self, main_win)
        self.grid = QGridLayout(self)
        self.auto_login = AutoLogin(main_win)
 
        self.grid.addWidget(self.auto_login)
 
class AutoLogin(QGroupBox):
    def __init__(self, main_win):
        QGroupBox.__init__(self, 'Group settings2')
        self.grid = QGridLayout(self)
 
        self.button = QPushButton('Open Settings', self)
        self.button.clicked.connect(partial(self.settings_open, main_win, True))
 
        self.grid.addWidget(self.button)
 
    def settings_open(self, main_win, prepare=False):
        if prepare:
            main_win.wait('Wait')
            thread = threading.Thread(target=self.settings_open, args=[main_win])
            thread.start()
        else:
            subprocess.run('firefox', shell = True)
            main_win.resume()
Добавлено через 2 часа 45 минут
Нашел проблему, оказывается, если отключить QTreeWidget, то проблема исчезает, его даже можно не отключать, а просто не помещать на QGridLayout, тогда ошибки не будет.
Только не понятно как устранить проблему...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.10.2022, 16:47
Ответы с готовыми решениями:

QObject::startTimer: Timers can only be used with threads started QThread
QObject::startTimer: Timers can only be used with threads started QThread Ошибка возникает когда Qt вызывают из другого потока, а не в...

StartTimer ошибка Cannot be started from another thread
Добрый день В отдельном потоке необходимо создать таймер и обрабатывать событие. По коду вроде бы делаю все правильно, но от ошибки...

Ошибка started update utmp about system runlevel changes
В VirtualBox через менеджер виртуальных носителей изменил размер виртуального диска, загрузка проходит через "Started update UTMP...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.10.2022, 16:47
Помогаю со студенческими работами здесь

Плавающая ошибка: timers cannot be stopped/started from another thread
Программа работает с RS-485. В классе интерфейса программы MainWindow хранится ссылка на поток работы COM портом PortManager. В MainWindow...

QBasicTimer
.h class cMap:public QGraphicsItem { /* cut*/ private: QBasicTimer timer; bool Collaps(QGraphicsItem * item); ...

QThread ошибка
Здравствуйте У меня возникла следующая проблемка при создании потока. Получаю ошибку: QObject: Cannot create children for a...

Ошибка Telethon + Qthread
Всем привет, пишу клиент для телеграмма для создания каналов по кнопке, т.к программа с использованием Pyqt что бы во время долгих операций...

Ошибка Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\do
Хотел сделать регистрацию (для себя, т.к. новичок), но при авторизации выдаёт указанное предупреждение. Код login.php <?php ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru