Как установить фокус на невидимую кнопку или само окно в QDialog (PyQt5)?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как установить фокус на невидимую кнопку или само окно в QDialog (PyQt5)?

Сообщение Anonymous »

Я хочу иметь QDialog, который блокирует взаимодействие с MainWindow, но изначально ни один виджет не имеет фокуса, т.е. е. ни одна кнопка не имеет синей рамки и не нажимается при нажатии «Ввод».
Мне не нужно использовать QDialog, пока я получаю такое же поведение: блокировка всего взаимодействия с главным окном пока другое окно открыто.
Я пытался переопределить метод showEvent() и вызвать self.setFocus(), чтобы переместить фокус на само окно QDialog, но это не сработало. Фокус всегда оставался на первой кнопке.
Моей идеей было создать невидимую фиктивную кнопку с setDefault(True), чтобы гарантировать, что эта кнопка получит фокус. Это не работает. Если я выполню setVisible(False), первый QPushButton в макете получит фокус, обозначенный синей рамкой вокруг него. Однако, если я не устанавливаю для видимости значение false, кнопка dummy_button имеет синюю рамку, что указывает на то, что она получила фокус.
Ниже приведен мой код:
import sys
from PyQt5.QtWidgets import QApplication, QDialog, QPushButton, QVBoxLayout

class CustomDialog(QDialog):
def __init__(self):
super().__init__()

self.setWindowTitle("Custom Dialog")

# Create buttons
self.button1 = QPushButton("Button 1", self)
self.button2 = QPushButton("Button 2", self)

self.button1.setDefault(False)
self.button2.setDefault(False)

self.dummy_button = QPushButton(self)
self.dummy_button.setVisible(False) # Removing this line will move the focus to the dummy button
self.dummy_button.setDefault(True)

# Layout
layout = QVBoxLayout(self)
layout.addWidget(self.button1)
layout.addWidget(self.button2)

# Set layout
self.setLayout(layout)

if __name__ == "__main__":
app = QApplication(sys.argv)
dialog = CustomDialog()
dialog.show()
sys.exit(app.exec_())


Подробнее здесь: https://stackoverflow.com/questions/785 ... -a-qdialog
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»