如何将Prolog文件的输出显示到Python QDialog文本区域?

2024-06-15 05:39:41 发布

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

我想根据用户输入的三个输入,将Prolog文件中的数据检索到QDialog中的文本区域。Prolog文件有一个功能,可以根据输入确定诊断患者有什么。问题是,当我从Prolog文件中提取数据时,我可以在Python控制台中显示它,但是当我想将该文本分配给QDialog文本are时,它失败了。 我在Python控制台中得到了正确的结果,但是在QDialog文本区域中,我得到了[{}]或者什么都没有

Prolog数据示例:

prostate_cancer_diagnose(Age, PV, PSA):-
      Age >=20, Age =<30,    PAge = vy,
      PV >=20, PV =<30,      PPV = vs,
      PSA >=0, PSA =<10,     PPSA = vlo,
      risk_level(PAge,PPV,PPSA).

risk_level(Age,PV, PSA):-
     Age = vy, PV = vs, PSA = vlo,
     low_risk.

low_risk:-
        writeln('  -->> LOW RISK LEVEL <<-- '),nl.

我试图检索无风险输出的诊断,并使用Python将其显示在QDialog(文本区域)的字段中

Python代码:

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.uic import loadUi
from pyswip import Prolog

prolog = Prolog()
prolog.consult("prostate_cancer.pl")


class LowRisk(QDialog):
    Age = 25
    PV = 25
    PSA = 5

    def __init__(self):
        super(LowRisk, self).__init__()
        loadUi("lowRisk.ui", self)
        diagnose = "prostate_cancer_diagnose({},{},{})".format(self.Age, self.PV, self.PSA)
        results = str(list(prolog.query(diagnose)))
        self.diagnoseArea.setText(results)

app = QApplication(sys.argv)
main_window = LowRisk()
widget = QtWidgets.QStackedWidget()
widget.addWidget(main_window)
widget.setFixedWidth(500)
widget.setFixedHeight(650)
widget.show()
app.exec_()

Current OutputDesired Output

使用这种方法,我什么也得不到(空文本区域)

results = list(prolog.query(diagnose))
str1 = []
self.diagnoseArea.setText(str1.append(results))

我该怎么办?有没有办法展示它?提前谢谢你


Tags: from文本importself区域agewidgetresults