[英]How to read QTextEdit text of current QTabWidget's tab?
我有很多選項卡,它們只包含一個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())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.