我试图在lineedit中显示来自EPICS(包)的运行时数据。我可以通过我的程序接收和发送数据,但当我不能显示数据时。功能pv.get公司()正在将数据从EPICS提供给Python。请给我建议更改,因为connect中的信号函数给出了错误
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import epics
from epics import *
class MyFrame(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self)
self.lineedit = QLineEdit(self)
self.lineedit.setGeometry(QRect(250,450,75,28))
pv=epics.PV('calc:sum.VAL')
self.lineedit=pv.get()
self.connect(self.lineedit, SIGNAL("textChanged()"), self.changedata)
self.color = QColor(Qt.blue)
self.show()
def changedata (self):
pv=epics.PV('calc:sum.VAL')
self.lineedit=pv.get()
text=pv.get()
self.update()
app=QApplication(sys.argv)
f=MyFrame()
f.show()
app.exec_()
`
这项建议归功于@ivica。我看到有11个小时没人回答,所以我想我会贡献自己的力量
您正在用
pv.get()
返回的任何数据替换您的QLineEdit
小部件。您要做的是将数据设置到小部件上。在更新
仔细研究你的代码示例,我发现了一些潜在的问题。在
虽然我使用的是新样式的信号连接,但在旧样式中,您缺少正确的签名:
^{pr2}$现在,尽管如此。。。我不明白为什么你要把文本字段的更改连接到一个插槽,然后这个插槽会更改文本字段。它将导致两个递归触发器。如果您要做的是捕捉文本的编辑,而不是调用epics lib并从中设置文本,那么您应该使用
textEdited
信号,当您以编程方式更改字段时,该信号将不会发出。在相关问题 更多 >
编程相关推荐