Функции типа getInt
являются статическими, что означает, что они создают внутренний экземпляр QInputDialog
, который не доступен напрямую из кода.Если вы создаете свой собственный экземпляр QInputDialog
, вы должны выполнить всю инициализацию самостоятельно и затем вызвать exec()
(как обычный диалог).Как показывает документация для QInputDialog , этот подход более гибкий, чем использование статических функций, поскольку он предоставляет гораздо больше возможностей для настройки.
Примерно эквивалентная реализация getInt
будет выглядеть так:
import sys
from PyQt5.QtWidgets import QApplication, QInputDialog
def int_value_changed(val):
print(val)
if QApplication.instance() is None:
qapp = QApplication(sys.argv)
def getInt(parent, title, label, value=0):
dlg = QInputDialog(parent)
dlg.setInputMode(QInputDialog.IntInput)
dlg.setWindowTitle(title)
dlg.setLabelText(label)
dlg.setIntValue(value)
dlg.intValueChanged.connect(int_value_changed)
accepted = dlg.exec_() == QInputDialog.Accepted
dlg.deleteLater()
return dlg.intValue(), accepted
print(getInt(None, 'Title', 'Type Value', 5))
# print(QInputDialog.getInt(None, 'title', 'Type Value', 5))