首页 > 解决方案 > Qt.FramelessWindowHint 不适用于 QInputDialog

问题描述

我正在学习 PySide6,我正在尝试创建一个无框架的 QInputDialog。

当我设置:

from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QInputDialog, QMainWindow


app = QApplication()

input_dialog = QInputDialog(flags=Qt.FramelessWindowHint)
text, ok = input_dialog.getText(QMainWindow(), 'input dialog', 'Is this ok?')
if ok:
    print(text)

app.exec()

框架仍然出现。为什么?

在此处输入图像描述

标签: pythonpysidepyside6qinputdialog

解决方案


getText 方法是静态的,所以input_dialog不是显示的窗口,而是在内部创建了一个 QInputDialog 的实例,因此您必须通过该方法传递标志:

from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QInputDialog

app = QApplication()

text, ok = QInputDialog.getText(
    None, "input dialog", "Is this ok?", flags=Qt.FramelessWindowHint
)
if ok:
    print(text)

推荐阅读