Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.05.2022
Сообщений: 1

QMessageBox и потоки

29.05.2022, 12:42. Показов 713. Ответов 0

Студворк — интернет-сервис помощи студентам
Всем привет, в первый раз пишу на этот форум.
У меня возникла проблема с уведомлениями QMessageBox и потоком. При открытии уведомления основное окно зависало вместе с уведомлением и вылетало. Решение этой проблемы есть в интернете, но я новичок и не очень понял как это всё реализовать в моём коде. Суть приложения - напоминалка, которая при назначенном пользователем времени выдаёт уведомление.

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
from PyQt5 import uic
from PyQt5.QtWidgets import *
import sys
import datetime as dt
import threading
 
 
def thread(my_func):
    def wrapper(*args, **kwargs):
        my_thread = threading.Thread(target=my_func, args=args, kwargs=kwargs)
        my_thread.start()
 
    return wrapper
 
 
StyleSheet = '''
    QLineEdit {
        border-width: 1px;
        border-style: solid;
        border-color: rgb(77, 77, 77);
    }
    QLineEdit:focus {
        border-color: rgb(89, 89, 89);
    }
    QPlainTextEdit {
        border-width: 1px;
        border-style: solid;
        border-color: rgb(77, 77, 77);
    }
    QPlainTextEdit:focus {
        border-color: rgb(89, 89, 89);
    }
'''
 
Form, Window = uic.loadUiType("pomny.ui")
app = QApplication([])
app.setStyleSheet(StyleSheet)
app.setStyle('Fusion')
window = Window()
window.setFixedSize(350, 540)
form = Form()
form.setupUi(window)
window.show()
 
 
@thread
def inf_baze(signal):
    if form.lineEdit.text() != '' and form.lineEdit_2.text() != '' and form.comboBox.currentText() != '' \
            and form.plainTextEdit.toPlainText() != '':
        comboBox1 = int(form.comboBox.currentText())
        lineEdit_hour = int(form.lineEdit.text())
        lineEdit_minutes = int(form.lineEdit_2.text())
        text_message = form.plainTextEdit.toPlainText()
        activate_button_time = dt.datetime.now()
        time_interval = activate_button_time + dt.timedelta(minutes=comboBox1)
        end_time = activate_button_time + dt.timedelta(hours=lineEdit_hour, minutes=lineEdit_minutes)
        while True:
            if dt.datetime.now() >= time_interval:
                msg = QMessageBox()
                msg.setText(text_message)
                msg.setWindowTitle("Message")
                msg.setStandardButtons(QMessageBox.Ok)
                msg = msg.exec_()
                time_interval += dt.timedelta(minutes=comboBox1)
            if dt.datetime.now() >= end_time:
                end_msg = QMessageBox()
                end_msg.setText("Работа приложения закончена")
                end_msg.setWindowTitle("End Message")
                end_msg.setStandardButtons(QMessageBox.Ok)
                end_msg = end_msg.exec_()
                break
            if form.pushButton_2.click() is True:
                end_msg2 = QMessageBox()
                end_msg2.setText("Работа приложения преждевременно закончена")
                end_msg2.setWindowTitle("End Message")
                end_msg2.setStandardButtons(QMessageBox.Ok)
                end_msg2 = end_msg2.exec_()
 
                break
    else:
        print("2")
 
 
form.comboBox.addItems(["30", "60", "90", "120"])
form.pushButton.clicked.connect(inf_baze)
 
sys.exit(app.exec())
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2022, 12:42
Ответы с готовыми решениями:

QMessageBox
При выборе файла который нельзя открыть должно быть окно с ошибкой, но ошибка происходит только в еомпиляции причем вместо этой ошибки...

QMessageBox
Нужно ввести радиус и посчитать площадь и длину, выдает ошибку. В чем проблема? { QMessageBox* msgBox = new QMessageBox; ...

PyQt6 QMessageBox
Я не пойму в чем ошибка, не работает QMessageBox.Critical def results(self): if not self.is_equel: res =...

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

Работа с QMessageBox
Добрый день! Каким образом я могу создать объект класса Message и работать уже с ним вызывая его в нужных местах программы и изменяя...

Класс QMessageBox
Проблемы при создании экземпляра класса QMessageBox в сопутствующем вызываемом модуле. При вызове окна предупреждения для вывода...

Немодальный QMessageBox
Здравствуйте. Создаю немодальный QMessageBox: msgBox = new QMessageBox(this); msgBox->setAttribute( Qt::WA_DeleteOnClose ); ...

Вапрос по QMessageBox
У меня есть код на python на pyqt5. В одном методе я создаю QMessageBox чтобы предупредить usera об ошибке. Связываю его со слотом, но он...

QMessageBox и QSS
Добрый день, надо сделать чтобы QMessageBox был обычный (без стиля, потому что он со стилем выглядит ужасно), просто я в программе...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru