如何为 QInputDialog 设置选项
How set options for a QInputDialog
我正在尝试为我的 QInputDialog
设置一些选项。但是如果我调用 getText
这些设置没有效果。
如何更改从 getText
弹出的 window 的外观?
import sys
from PyQt5 import QtWidgets, QtCore
class Mywidget(QtWidgets.QWidget):
def __init__(self):
super(Mywidget, self).__init__()
self.setFixedSize(800, 600)
def mousePressEvent(self, event):
self.opendialog()
def opendialog(self):
inp = QtWidgets.QInputDialog()
##### SOME SETTINGS
inp.setInputMode(QtWidgets.QInputDialog.TextInput)
inp.setFixedSize(400, 200)
inp.setOption(QtWidgets.QInputDialog.UsePlainTextEditForTextInput)
p = inp.palette()
p.setColor(inp.backgroundRole(), QtCore.Qt.red)
inp.setPalette(p)
#####
text, ok = inp.getText(w, 'title', 'description')
if ok:
print(text)
else:
print('cancel')
if __name__ == '__main__':
qApp = QtWidgets.QApplication(sys.argv)
w = Mywidget()
w.show()
sys.exit(qApp.exec_())
get*方法都是static,这意味着它们可以在没有QInputDialog
class实例的情况下被调用。 Qt 为这些方法创建了一个内部 对话框实例,因此您的设置将被忽略。
要让您的示例运行,您需要设置更多选项,然后显式显示对话框:
def opendialog(self):
inp = QtWidgets.QInputDialog(self)
##### SOME SETTINGS
inp.setInputMode(QtWidgets.QInputDialog.TextInput)
inp.setFixedSize(400, 200)
inp.setOption(QtWidgets.QInputDialog.UsePlainTextEditForTextInput)
p = inp.palette()
p.setColor(inp.backgroundRole(), QtCore.Qt.red)
inp.setPalette(p)
inp.setWindowTitle('title')
inp.setLabelText('description')
#####
if inp.exec_() == QtWidgets.QDialog.Accepted:
print(inp.textValue())
else:
print('cancel')
inp.deleteLater()
所以现在您或多或少地重新实现了 getText
所做的一切。
我正在尝试为我的 QInputDialog
设置一些选项。但是如果我调用 getText
这些设置没有效果。
如何更改从 getText
弹出的 window 的外观?
import sys
from PyQt5 import QtWidgets, QtCore
class Mywidget(QtWidgets.QWidget):
def __init__(self):
super(Mywidget, self).__init__()
self.setFixedSize(800, 600)
def mousePressEvent(self, event):
self.opendialog()
def opendialog(self):
inp = QtWidgets.QInputDialog()
##### SOME SETTINGS
inp.setInputMode(QtWidgets.QInputDialog.TextInput)
inp.setFixedSize(400, 200)
inp.setOption(QtWidgets.QInputDialog.UsePlainTextEditForTextInput)
p = inp.palette()
p.setColor(inp.backgroundRole(), QtCore.Qt.red)
inp.setPalette(p)
#####
text, ok = inp.getText(w, 'title', 'description')
if ok:
print(text)
else:
print('cancel')
if __name__ == '__main__':
qApp = QtWidgets.QApplication(sys.argv)
w = Mywidget()
w.show()
sys.exit(qApp.exec_())
get*方法都是static,这意味着它们可以在没有QInputDialog
class实例的情况下被调用。 Qt 为这些方法创建了一个内部 对话框实例,因此您的设置将被忽略。
要让您的示例运行,您需要设置更多选项,然后显式显示对话框:
def opendialog(self):
inp = QtWidgets.QInputDialog(self)
##### SOME SETTINGS
inp.setInputMode(QtWidgets.QInputDialog.TextInput)
inp.setFixedSize(400, 200)
inp.setOption(QtWidgets.QInputDialog.UsePlainTextEditForTextInput)
p = inp.palette()
p.setColor(inp.backgroundRole(), QtCore.Qt.red)
inp.setPalette(p)
inp.setWindowTitle('title')
inp.setLabelText('description')
#####
if inp.exec_() == QtWidgets.QDialog.Accepted:
print(inp.textValue())
else:
print('cancel')
inp.deleteLater()
所以现在您或多或少地重新实现了 getText
所做的一切。