如何在pyqt5中找到小部件的父TabPage?
how to find parent TabPage of widget in pyqt5?
我找到了用于查找子控件 的代码,但是我无法找到用于获取父控件的命令。
我创建了带有多个选项卡的 QTabWidget。在每个选项卡中我都有一些小部件。
我想突出显示给定小部件元素的标签页。
我创建了一个代码来实现这一点。它正在工作。但我觉得这不是直截了当的。你能提出更好的解决方案来实现同样的目标吗?
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
def color_parent_tab(widget,Tab):
tabs={Tab.widget(i):i for i in range(Tab.count())}
while widget!=None:
try:
if widget in tabs:
Tab.tabBar().setTabTextColor(tabs[widget], QColor('red'))
widget=widget.parent()
except Exception as e:print(e)
if __name__ == '__main__':
app = QApplication([])
window=QTabWidget()
w=QWidget()
VL=QVBoxLayout(w)
window.addTab(w,'tab1')
L=QLabel('Label1')
VL.addWidget(L)
L2=QLabel('Label2')
VL.addWidget(L2)
w=QWidget()
VL=QVBoxLayout(w)
window.addTab(w,'tab2')
L3=QLabel('Label1')
VL.addWidget(L3)
L4=QLineEdit()
VL.addWidget(L4)
color_parent_tab(L3,window)
window.showMaximized()
app.exec()
您可以使用 isAncestorOf
,其中 returns True
如果参数中的小部件是子级(或孙级,任何级别):
def color_parent_tab(widget, Tab):
for i in range(Tab.count()):
if Tab.widget(i).isAncestorOf(widget):
Tab.tabBar().setTabTextColor(i, QColor('red'))
return
我找到了用于查找子控件
我创建了带有多个选项卡的 QTabWidget。在每个选项卡中我都有一些小部件。 我想突出显示给定小部件元素的标签页。
我创建了一个代码来实现这一点。它正在工作。但我觉得这不是直截了当的。你能提出更好的解决方案来实现同样的目标吗?
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
def color_parent_tab(widget,Tab):
tabs={Tab.widget(i):i for i in range(Tab.count())}
while widget!=None:
try:
if widget in tabs:
Tab.tabBar().setTabTextColor(tabs[widget], QColor('red'))
widget=widget.parent()
except Exception as e:print(e)
if __name__ == '__main__':
app = QApplication([])
window=QTabWidget()
w=QWidget()
VL=QVBoxLayout(w)
window.addTab(w,'tab1')
L=QLabel('Label1')
VL.addWidget(L)
L2=QLabel('Label2')
VL.addWidget(L2)
w=QWidget()
VL=QVBoxLayout(w)
window.addTab(w,'tab2')
L3=QLabel('Label1')
VL.addWidget(L3)
L4=QLineEdit()
VL.addWidget(L4)
color_parent_tab(L3,window)
window.showMaximized()
app.exec()
您可以使用 isAncestorOf
,其中 returns True
如果参数中的小部件是子级(或孙级,任何级别):
def color_parent_tab(widget, Tab):
for i in range(Tab.count()):
if Tab.widget(i).isAncestorOf(widget):
Tab.tabBar().setTabTextColor(i, QColor('red'))
return