Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2025, 15:25   #1
mikkijon
Пользователь
 
Регистрация: 03.10.2019
Сообщений: 28
По умолчанию Не работает модальное окно

Приветствую Друзья!!!
Снова обращаюсь к вам за помощью так как всемогущие поисковики ничего толкового не дают по моим запросам.
Суть проблемы в следующим:
Написав скрипт согласно книге по которой я учу.... Окно тут же исчезает
Код:
from PyQt6 import QtCore, QtWidgets
import sys
def window_modal_window():
    global modalWindow
    modalWindow = QtWidgets.QWidget(window1, QtCore.Qt.WindowType.Window)
    modalWindow.setWindowTitle("Модальное окно")
    modalWindow.resize(200, 50)
    modalWindow.setWindowModality(QtCore.Qt.WindowModality.WindowModal)
    modalWindow.setAttribute(QtCore.Qt.WidgetAttribute.WA_DeleteOnClose, True)
    modalWindow.move(window1.geometry().center -
                     modalWindow.rect().center -
                     QtCore.QPoint(4, 30))
    modalWindow.show()

app = QtWidgets.QApplication(sys.argv)
window1 = QtWidgets.QWidget()
window1.setWindowTitle("Обычное окно")
window1.resize(300, 100)
button = QtWidgets.QPushButton(window1)
button.clicked.connect(window_modal_window)
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(button)
vbox.addWidget(button)
window1.setLayout(vbox)
window1.show()
sys.exit()

window2 = QtWidgets.QWidget()
window2.setWindowTitle("Это окно будет блокировано")
window2.resize(500, 100)
window2.show()
sys.exit()
По скриншоту которая я загрузил оно не может определить глобальную переменную... и переменную - windows2
modwin.jpg
modwin2.png
Подскажите пожалуйста, где я ошибаюсь....
с Уважением Ким Евгений
mikkijon вне форума Ответить с цитированием
Старый 12.01.2025, 18:40   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Не нужно два раза вызывать sys.exit(), а только один раз в конце и sys.exit(app.exec()). Аргументом QtWidgets.QPushButton должен быть текст кнопки, а не окно. Название второго окна не совпадает с реальным поведением (оно не будет заблокировано). window1.geometry() .center не атрибут, а метод, так что нужно его вызвать:
Код:
    modalWindow.move(window1.geometry().center() -
                     modalWindow.rect().center() -
                     QtCore.QPoint(4, 30))
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.01.2025, 19:01   #3
mikkijon
Пользователь
 
Регистрация: 03.10.2019
Сообщений: 28
По умолчанию

Спасибо за помощь
с Уважением Ким Евгений
mikkijon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модальное окно lastochka21 JavaScript, Ajax 1 22.11.2018 10:13
В php модальное окно -=Virus=- PHP 1 23.01.2016 22:16
Модальное окно Sprat PHP 3 28.03.2012 16:04
Модальное окно adm2010 Общие вопросы Delphi 2 28.09.2011 22:21
Модальное окно из Dll neo1109 Общие вопросы Delphi 0 29.06.2007 11:24