Python 如何在PyQt中向文本框显示终端输出

Python 如何在PyQt中向文本框显示终端输出,python,python-3.x,pyqt,pyqt5,qt-designer,Python,Python 3.x,Pyqt,Pyqt5,Qt Designer,我正在编写一个GUI,它有一个将输出打印到终端的功能。我想让它显示在某种文本框或类似的东西 代码如下所示: def radial_distance(body1, body2, utc, ref, abcorr, obs): x_1 = 1 x_2 = 4 y_1 = 5 y_2 = 2 z_1 = 7 z_2 = 6 d_rad = np.sqrt((x_2 - x_1)**2.0 + (y_2 - y_1)**2.0 + (z_2 -

我正在编写一个GUI,它有一个将输出打印到终端的功能。我想让它显示在某种文本框或类似的东西

代码如下所示:

def radial_distance(body1, body2, utc, ref, abcorr, obs):
    x_1 = 1
    x_2 = 4
    y_1 = 5
    y_2 = 2
    z_1 = 7
    z_2 = 6

    d_rad = np.sqrt((x_2 - x_1)**2.0 + (y_2 - y_1)**2.0 + (z_2 - z_1)**2.0)

    return d_rad
我尝试了文本标签,但我需要更多的打印空间(需要向下滚动)。还尝试了文本浏览器和文本编辑,但未找到显示方式

PyQt看起来像:

from Distances import radial_distance
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_window1(object):
    def setupUi(self, window1):
        window1.setObjectName("window1")
        window1.resize(485, 530) # 820 530
        self.centralwidget = QtWidgets.QWidget(window1)
        self.centralwidget.setObjectName("centralwidget")
        self.output_rd = QtWidgets.QTextBrowser(self.groupBox_2)
        self.output_rd.setGeometry(QtCore.QRect(10, 90, 331, 111))
        self.output_rd.setObjectName("output_rd")

def retranslateUi(self, window1):
        _translate = QtCore.QCoreApplication.translate
        window1.setWindowTitle(_translate("window1", "GUI"))

 def rad_distance(self):
        time_rd = np.asarray(self.get_time_rd())

        body1, body2 = ['EARTH', 'SUN']

        rad_dis = radial_distance(body1, body2, time_rd, 'HCI', 'NONE', 'SUN')

        self.output_rd.setText(rad_dis) # This doesnt work

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window1 = QtWidgets.QMainWindow()
    ui = Ui_window1()
    ui.setupUi(window1)
    window1.show()
    sys.exit(app.exec_())
你能帮我吗?谢谢

试试看:

from PyQt5 import QtCore, QtGui, QtWidgets
import numpy as np

#from Distances import radial_distance
def radial_distance(body1, body2, utc, ref, abcorr, obs):
    x_1 = 1
    x_2 = 4
    y_1 = 5
    y_2 = 2
    z_1 = 7
    z_2 = 6

    d_rad = np.sqrt((x_2 - x_1)**2.0 + (y_2 - y_1)**2.0 + (z_2 - z_1)**2.0)

    return d_rad

class Ui_window1(object):
    def setupUi(self, window1):
        window1.setObjectName("window1")
        window1.resize(485, 530) # 820 530
        self.centralwidget = QtWidgets.QWidget(window1)
        self.centralwidget.setObjectName("centralwidget")
        window1.setCentralWidget(self.centralwidget)

        self.groupBox_2 = QtWidgets.QGroupBox("groupBox_2", self.centralwidget)

        self.output_rd = QtWidgets.QTextBrowser(self.groupBox_2)
        self.output_rd.setGeometry(QtCore.QRect(10, 90, 331, 111))
        self.output_rd.setObjectName("output_rd")



        self.retranslateUi(window1)

        QtCore.QMetaObject.connectSlotsByName(window1)        

    def retranslateUi(self, window1):
            _translate = QtCore.QCoreApplication.translate
            window1.setWindowTitle(_translate("window1", "GUI"))


    def rad_distance(self):
        time_rd = np.asarray([1, 2])         # ? (self.get_time_rd())

        body1, body2 = ['EARTH', 'SUN']

        rad_dis = radial_distance(body1, body2, time_rd, 'HCI', 'NONE', 'SUN')

#        self.output_rd.setText(rad_dis)
        self.output_rd.append(str(rad_dis))                                     # + str


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window1 = QtWidgets.QMainWindow()
    ui = Ui_window1()
    ui.setupUi(window1)

    ui.rad_distance()                                                           # +

    window1.show()
    sys.exit(app.exec_())
试试看:

from PyQt5 import QtCore, QtGui, QtWidgets
import numpy as np

#from Distances import radial_distance
def radial_distance(body1, body2, utc, ref, abcorr, obs):
    x_1 = 1
    x_2 = 4
    y_1 = 5
    y_2 = 2
    z_1 = 7
    z_2 = 6

    d_rad = np.sqrt((x_2 - x_1)**2.0 + (y_2 - y_1)**2.0 + (z_2 - z_1)**2.0)

    return d_rad

class Ui_window1(object):
    def setupUi(self, window1):
        window1.setObjectName("window1")
        window1.resize(485, 530) # 820 530
        self.centralwidget = QtWidgets.QWidget(window1)
        self.centralwidget.setObjectName("centralwidget")
        window1.setCentralWidget(self.centralwidget)

        self.groupBox_2 = QtWidgets.QGroupBox("groupBox_2", self.centralwidget)

        self.output_rd = QtWidgets.QTextBrowser(self.groupBox_2)
        self.output_rd.setGeometry(QtCore.QRect(10, 90, 331, 111))
        self.output_rd.setObjectName("output_rd")



        self.retranslateUi(window1)

        QtCore.QMetaObject.connectSlotsByName(window1)        

    def retranslateUi(self, window1):
            _translate = QtCore.QCoreApplication.translate
            window1.setWindowTitle(_translate("window1", "GUI"))


    def rad_distance(self):
        time_rd = np.asarray([1, 2])         # ? (self.get_time_rd())

        body1, body2 = ['EARTH', 'SUN']

        rad_dis = radial_distance(body1, body2, time_rd, 'HCI', 'NONE', 'SUN')

#        self.output_rd.setText(rad_dis)
        self.output_rd.append(str(rad_dis))                                     # + str


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window1 = QtWidgets.QMainWindow()
    ui = Ui_window1()
    ui.setupUi(window1)

    ui.rad_distance()                                                           # +

    window1.show()
    sys.exit(app.exec_())

添加您拥有的代码already@RyanSchaefer就在那里。我还尝试返回d_-rad并用self.label.setText(d_-rad)调用它,但没有成功:(@S.Nick我不知道这是否是您想要的,因为我有很多函数,但我想它将所有的东西加起来,再加上您的代码already@RyanSchaefer就是这样。我还尝试返回d_-rad并使用self.label.setText(d_-rad)调用它,但没有成功:(@S.Nick我不知道这是否是你想要的,因为我有很多函数,但我想它总结了一切,非常感谢你,这是可行的。有没有办法向字符串中添加更多的字符?(例如,公里等单位)@mrcfm4
self.output\u rd.append({}{}}.format(str(rad_dis),“km”))
你是我所经历过的最接近上帝的人,非常感谢你(如果你想办法插入换行符\n或任何我承诺永远爱你的东西)@mrcfm4
self.output\u rd.append(“{}{{}{}\n或任何我承诺永远爱你的东西”).format(str(rad\u dis),“公里”,“你好,世界!”)
你是世界上最聪明的人,非常非常感谢你,非常感谢,这很有效。有没有办法在字符串中添加更多字符?(例如公里等单位)@mrcfm4
self.output\u rd.append({}{}}.format(str(rad_dis),“公里”))
你是我所经历过的最接近上帝的人,非常感谢你(如果你想办法插入换行符\n或任何我承诺永远爱你的东西)@mrcfm4
self.output\u rd.append(“{}{}{}\n或任何我承诺永远爱你的东西)”.format(str(rad\u-dis),”公里数,“你好,世界!”)
你是宇宙中最聪明的人,非常感谢