pythonpyqt:我无法从外部程序在lineedit中显示数据

2024-04-29 23:13:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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_()

`


Tags: 数据fromimportselfgetdefconnectsys
1条回答
网友
1楼 · 发布于 2024-04-29 23:13:09

这项建议归功于@ivica。我看到有11个小时没人回答,所以我想我会贡献自己的力量

您正在用pv.get()返回的任何数据替换您的QLineEdit小部件。您要做的是将数据设置到小部件上。在

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.setText(pv.get())

        # new-style signal slot connections
        self.lineedit.textChanged.connect(self.changedata)
        self.color = QColor(Qt.blue)


    def changedata (self):

        pv=epics.PV('calc:sum.VAL')
        self.lineedit.setText(pv.get())

更新

仔细研究你的代码示例,我发现了一些潜在的问题。在

虽然我使用的是新样式的信号连接,但在旧样式中,您缺少正确的签名:

^{pr2}$

现在,尽管如此。。。我不明白为什么你要把文本字段的更改连接到一个插槽,然后这个插槽会更改文本字段。它将导致两个递归触发器。如果您要做的是捕捉文本的编辑,而不是调用epics lib并从中设置文本,那么您应该使用textEdited信号,当您以编程方式更改字段时,该信号将不会发出。在

# new style
self.lineedit. textEdited.connect(self.changedata)
# old style
self.connect(self.lineedit, SIGNAL("textEdited(QString)"), self.changedata)

相关问题 更多 >