python - 如何读取当前QTabWidget选项卡的QTextEdit文本?

标签 python python-2.7 pyqt4 qtextedit qtabwidget

我有很多选项卡,它们只包含一个 QTextEdit 元素,我需要读取当前选项卡的 QTextEdit 文本。 可以实现吗?

#!/depot/Python-2.7.6/bin/python

import sys,os,copy,re,subprocess
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Tool(QWidget):

    def __init__(self,parent=None):
        super(Tool, self).__init__(parent)
        self.tabs = QTabWidget()
        self.tabs.setTabsClosable(True)
        self.tabs.isMovable()
        self.initUI()

    def help_func(self):
        new_tab = QWidget()
        text = QTextEdit(self)
        text.setReadOnly(True)
        text.setLineWrapMode(QTextEdit.NoWrap)
        text.setText("some text")
        TextBoxlayout = QVBoxLayout()
        TextBoxlayout.addWidget(text)
        new_tab.setLayout(TextBoxlayout)
        self.tabs.addTab(new_tab,str(self.tabs.count()))
        self.tabs.setCurrentIndex(self.tabs.count()-1)

    def initUI(self):
        Tool.help_func(self)
        Tool.help_func(self)
        Tool.help_func(self)
        grid = QGridLayout(self)
        grid.addWidget(self.tabs,0,0)
        self.setLayout(grid)

我希望在选项卡更改信号上打印 QTextEdit 文本。

最佳答案

利用 QTextEdit 是 TextBoxlayout 的一部分这一事实,因此它是 new_tab 的子级,可以使用 findChild() 获取它:

class Tool(QWidget):
    def __init__(self, parent=None):
        super(Tool, self).__init__(parent)
        self.tabs = QTabWidget(
            tabsClosable=True, currentChanged=self.onCurrentChanged
        )
        self.initUI()

    def help_func(self):
        new_tab = QWidget()
        text = QTextEdit(readOnly=True, lineWrapMode=QTextEdit.NoWrap)
        text.setText("some text")
        TextBoxlayout = QVBoxLayout(new_tab)
        TextBoxlayout.addWidget(text)
        self.tabs.addTab(new_tab, str(self.tabs.count()))
        self.tabs.setCurrentIndex(self.tabs.count() - 1)

    def initUI(self):
        for _ in range(3):
            self.help_func()
        grid = QGridLayout(self)
        grid.addWidget(self.tabs, 0, 0)

    @pyqtSlot(int)
    def onCurrentChanged(self, ix):
        w = self.tabs.widget(ix)
        te = w.findChild(QTextEdit)
        if te is not None:
            print(te.toPlainText())

关于python - 如何读取当前QTabWidget选项卡的QTextEdit文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56986873/

相关文章:

python - 在 python numpy 中构建一个 nxn 矩阵,对于任何 n

Python:GIL 上下文——切换

python-2.7 - 使 Ace 编辑器在 Bottle 环境中工作所需的最少文件是多少?需要将它们放置在哪里?

python - PyQT项目组织

python - 通过 PyQt 中 QTableView 和 QTableWidget 的上下文菜单传递实例

qt - QCheckBox:如何区分用户引起的状态更改和以编程方式进行的更改?

python - 如何在 matplotlib 绘图中正确设置 cartopy geoaxes 中的投影和变换

Python-用下划线替换所有空格并将目录中所有文件转换为小写

python - 无法导入名称收缩

python - 如何在Python中解析一个大的XML文件?