【发布时间】:2021-04-19 09:33:45
【问题描述】:
我想从主窗口更新另一个窗口中的 TextBrowser 小部件。目标是简单地将字符串写入小部件以充当伪控制台。当我检查 QTextBrowser 对象时,我可以看到它支持setText() - 但我找不到从主窗口对象访问setText() 的方法(我怀疑这是因为我没有正确调用它)。不需要使用 TextBrowser 小部件。
我见过的例子谈到了使用信号和槽来进行此类操作,但这对于我想要完成的事情来说似乎有点过头了。是否需要将信号用于如此简单的事情,或者我可以从主窗口以某种方式setText()(或类似的东西)?
scratch.py
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
import sys
from log_dialog import Ui_dialog
class Application(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(Application, self).__init__(*args, **kwargs)
self.show()
# ===================================================
self.log_widget = QtWidgets.QDialog()
ui = Ui_dialog()
ui.setupUi(self.log_widget)
self.log_widget.exec_()
# Write some text to log_widget <-----
# ===================================================
qApp = QtWidgets.QApplication(sys.argv)
application_window = Application()
sys.exit(qApp.exec_())
log_dialog.py
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'log_dialog.ui'
#
# Created by: PyQt5 UI code generator 5.15.3
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_dialog(object):
def setupUi(self, dialog):
dialog.setObjectName("dialog")
dialog.resize(398, 307)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(dialog.sizePolicy().hasHeightForWidth())
dialog.setSizePolicy(sizePolicy)
self.textBrowser = QtWidgets.QTextBrowser(dialog)
self.textBrowser.setGeometry(QtCore.QRect(9, 9, 381, 291))
self.textBrowser.setObjectName("textBrowser")
self.retranslateUi(dialog)
QtCore.QMetaObject.connectSlotsByName(dialog)
def retranslateUi(self, dialog):
_translate = QtCore.QCoreApplication.translate
dialog.setWindowTitle(_translate("dialog", "Log"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
dialog = QtWidgets.QDialog()
ui = Ui_dialog()
ui.setupUi(dialog)
dialog.show()
sys.exit(app.exec_())
【问题讨论】:
标签: pyqt