Я понимаю, что вопрос прост, но я все равно застрял.Есть ли способ получить имя виджета родительского макета из унаследованного класса виджетов?
У меня есть небольшой кусочек кода здесь.Поэтому в основном мне нужно напечатать self.super_main_layout
в поле метки, где сейчас печатается «Нажать кнопку».
У меня есть функция def print_foo, которая должна это сделать.Но я не знаю, как получить parent()
имя из унаследованного класса.Мне нужно, чтобы именно это self.super_main_layout
было напечатано в поле ярлыка.
Я пытался использовать метод self.parent()
, но он не работает
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import QApplication
class ButtonTest(QtWidgets.QWidget):
def __init__(self):
super(ButtonTest, self).__init__()
self.setFixedSize(300, 100)
self.layout = QtWidgets.QHBoxLayout()
self.setLayout(self.layout)
self.label = QtWidgets.QLabel("Push the Button")
self.button = QtWidgets.QPushButton("Button")
self.button.clicked.connect(self.print_foo)
self.layout.addWidget(self.label)
self.layout.addWidget(self.button)
def print_foo(self):
### ???????????
self.label.setText(str(self.parent().parent())) # ????
print(self.parent()) # ????
class MyApp(QtWidgets.QWidget):
def __init__(self):
super(MyApp, self).__init__()
self.W = ButtonTest()
self.setFixedSize(300,300)
self.super_main_layout = QtWidgets.QVBoxLayout()
self.setLayout(self.super_main_layout)
self.super_main_layout.addWidget(self.W)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = MyApp()
w.show()
sys.exit(app.exec_())
Так что теперь он печатает None в поле метки при нажатии кнопки.Но я хочу, чтобы виджет макета self.super_main_layout
был напечатан.Есть ли способ сделать это?Я сейчас работаю над большим проектом.И я программирую только унаследованный класс с кнопкой, в которой я должен получать разные родительские имена при нажатии кнопки.Большое спасибо.
пс.Я совершенно новичок в этом сайте и вообще программирую, так что извините за любые ошибки.Заранее спасибо!