PySide6中QInputDialog设置Qt.FramelessWindowHint不生效是什么原因?
原因说明
你设置的Qt.FramelessWindowHint不生效的核心原因是QInputDialog.getText()是类静态方法,该方法运行时会在内部创建一个全新的QInputDialog实例,你提前实例化并配置了无框属性的input_dialog对象完全没有被调用,自然配置不会生效。
修复方案
方案1:手动配置自定义实例,不使用静态方法
from PySide6.QtCore import Qt from PySide6.QtWidgets import QApplication, QInputDialog, QMainWindow app = QApplication() # 实例化时设置无框标志 input_dialog = QInputDialog(flags=Qt.FramelessWindowHint) # 手动配置对话框参数 input_dialog.setWindowTitle('input dialog') input_dialog.setLabelText('Is this ok?') # 执行对话框获取结果 ok = input_dialog.exec() text = input_dialog.textValue() if ok: print(text) app.exec()
方案2:静态方法调用时直接传入标志位参数
getText方法支持在调用时通过最后一个参数传入窗口标志,无需提前实例化对象:
from PySide6.QtCore import Qt from PySide6.QtWidgets import QApplication, QInputDialog, QMainWindow app = QApplication() text, ok = QInputDialog.getText(QMainWindow(), 'input dialog', 'Is this ok?', flags=Qt.FramelessWindowHint) if ok: print(text) app.exec()
以上两种方案都可以实现无框的QInputDialog效果。
内容的提问来源于stack exchange,提问作者Filippo Boido
相关产品推荐
相关产品推荐

