в C ++ BoolResult приводится к указателю:
bool ok;
int i = QInputDialog::getInt(this, tr("QInputDialog::getInteger()"),
tr("Percentage:"), 25, 0, 100, 1, &ok);
if (ok)
integerLabel->setText(tr("%1%").arg(i));
Как можно получить «нормально» bool в pyQt / pythonQt?
Он попробовал следующее, которое не будет работать:
from PythonQt.QtGui import QInputDialog, QWidget
from PythonQt.QtCore import Qt, QTimer
from PythonQt import BoolResult
...
x = QWidget()
x.setAttribute(Qt.WA_DeleteOnClose)
ok = BoolResult()
i = QInputDialog.getInt(x, "test", "hallo", 1000, None, None, None, ok)
print("ok:", ok)
print("i:", i)
print("i:", i)
что приводит к
2/24/2018 17:49:42 pyTSon.PluginHost.onMenuItemEvent Error Error calling onMenuItemEvent of python plugin Auto Channel Commander: Traceback (most recent call last):
File "C:/Users/blusc/AppData/Roaming/TS3Client/plugins/pyTSon/scripts\pluginhost.py", line 663, in onMenuItemEvent
plugin.onMenuItemEvent(schid, atype, locid, selectedItemID)
File "C:/Users/blusc/AppData/Roaming/TS3Client/plugins/pyTSon/scripts\autoCommander\__init__.py", line 64, in onMenuItemEvent
i = QInputDialog.getInt(x, "test", "hallo", 1000, None, None, None, ok)
ValueError: Could not find matching overload for given arguments:
(QWidget(0x2759aa87560) , 'test', 'hallo', 1000, None, None, None, BoolResult(False))
The following slots are available:
static getInt(QWidget parent, QString title, QString label, int value, int minValue, int maxValue, int step, PythonQt.BoolResult ok, Qt::WindowFlags flags) -> int
static getInt(QWidget parent, QString title, QString label, int value, int minValue, int maxValue, int step, PythonQt.BoolResult ok) -> int
static getInt(QWidget parent, QString title, QString label, int value, int minValue, int maxValue, int step) -> int
static getInt(QWidget parent, QString title, QString label, int value, int minValue, int maxValue) -> int
static getInt(QWidget parent, QString title, QString label, int value, int minValue) -> int
static getInt(QWidget parent, QString title, QString label, int value) -> int
static getInt(QWidget parent, QString title, QString label) -> int
Проблема в вашем случае заключается в том, что вы должны назначить соответствующие значения, и вы не должны использовать None
Например, если мы видим документы Qt:
int QInputDialog :: getInt (QWidget * parent, const QString &title, const QString &метка, значение int = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool * ok = Q_NULLPTR, флаги Qt :: WindowFlags = Qt :: WindowFlags ())
поэтому возможное решение состоит в том, чтобы скопировать эти значения:
ok = BoolResult()
i = QInputDialog.getInt(push1, "test", "hallo", 1000, -2147483647, 2147483647, 1, ok)
print("ok:", ok)
print("i:", i)
Других решений пока нет …