gpt4 book ai didi

python - 如何检测 QInputDialog 中值的变化?

转载 作者:行者123 更新时间:2023-12-01 01:13:46 24 4
gpt4 key购买 nike

我想在更改QInputDialoggetInt方法调用的对话框的值时打印该值。

我运行以下代码,但它不起作用:

import sys
from PyQt5.QtCore import Slot
from PyQt5.QtWidgets import QApplication, QInputDialog

@Slot(int)
def int_value_changed(val):
print(val)

if 'qapp' not in globals():
qapp = QApplication(sys.argv)

dlg = QInputDialog(None)
dlg.intValueChanged.connect(int_value_changed)

dlg.getInt(None, 'title', 'Type Value', 0)

最佳答案

诸如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))

关于python - 如何检测 QInputDialog 中值的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54584825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com