창의 특정 부분에 표시되지만 여전히 단일 창을 사용하는 다른 클래스의 UI를 사용할 수 있습니까? <div></div>
HTML의 요소 와 같습니다 . 아래와 같이 시도했는데 self.header
눌렀는데 라벨이 안나 왔어요self.some_button
MainUi.py
from PyQt5 import QtWidgets, QtCore
class UserInterface(QtWidgets.QMainWindow):
# As Main Window, every widget will always be displayed
def setupUi(self, MainWindow):
MainWindow.resize(800, 600)
MainWindow.setWindowTitle("WindowTitle")
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.main_title = QtWidgets.QLabel(self.centralWidget)
self.main_title.setText("Some text")
self.some_button = QtWidgets.QPushButton(self.centralWidget)
self.some_button.move(20, 20)
self.some_button.setText("Some Button")
self.some_button.adjustSize()
MainWindow.setCentralWidget(self.centralWidget)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
class AboutPerson(QtWidgets.QWidget):
# As widget class, will be shown on a certain part of the main window
def __init__(self, parent=None, person=None):
super().__init__(parent)
self.header = QtWidgets.QLabel()
self.header.move(40, 0)
self.header.setText(f"Some header {person}")
self.show()
MainControl.py
from PyQt5 import QtWidgets
from MainUi import *
class ControlMainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.main_ui = UserInterface()
self.main_ui.setupUi(self)
self.main_ui.some_button.clicked.connect(self.draw_about)
def draw_about(self):
self.about_ui = AboutPerson(self.main_ui, 'John')
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
program = ControlMainWindow()
program.show()
sys.exit(app.exec_())
위젯이 창의 자식이거나 창에 이미 표시된 위젯의 자식이면 창에 표시됩니다. "self.about_ui"가 창의 자식이므로 창에 표시되는 경우 "header"는 창 또는 "self.about_ui"의 자식이 아니므로 "header"가 아닙니다. 한 가지 해결책은 부모를 전달하는 것입니다.
self.header = QtWidgets.QLabel(self)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다