Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Как сделать модальное окно без диалога? [RSS Feed]

#1 Окт. 7, 2022 15:50:38

Vovsla
Зарегистрирован: 2018-03-10
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать модальное окно без диалога?

Есть основное окно программы, в котором будут производиться различные действия по нажатию кнопки.
На время обработки запроса необходимо выводить всплывающее уведомление об обработке запроса с блокировкой основного окна.
У меня получается отображать только модальное окно с заголовком, без текста и оно доступно для перетаскивания. При отключении заголовка через setWindowFlags окно вообще не отображается.

Хотелось бы отображать что-то вроде элемента “ToolTip” по центру родительского окна, в котором есть только текст, нет заголовка и окно было бы недоступно для взаимодействия, перетаскивание и т.д.
Как это можно сделать?

 from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QWidget,
                                QApplication, 
                                QDesktopWidget,
                                QGridLayout,
                                QPushButton,
                                QDialog,
                                QLabel,
                                )
import time
 
 
class Gui(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(320, 240)
        self.setWindowTitle('Test')
        
 
        self.grid = QGridLayout(self)
        self.button = QPushButton()
 
        self.grid.addWidget(self.button)
        
        self.button.setText('Button')
        self.button.clicked.connect(self.show_win)
 
        self.modal = QDialog(self)
        # self.modal.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowTitleHint)
        self.modal.resize(200, 200)
        self.modal.setModal(True)
        self.grid2 = QGridLayout(self.modal)
        self.label2 = QLabel()
        self.label2.setText('info')
        self.grid2.addWidget(self.label2)
        
        self.move_center()
 
    def show_win(self):
        print('tst')
        self.modal.show()
        time.sleep(3)
        self.modal.close()
 
    def move_center(self):
        fg = self.frameGeometry()
        ac = QDesktopWidget().availableGeometry().center()
        fg.moveCenter(ac)
        self.move(fg.topLeft())
 
def show_gui():
    app = QApplication([])
    gui = Gui()
    gui.show()
    app.exec_()

Офлайн

  • Начало
  • » GUI
  • » Как сделать модальное окно без диалога?[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version