我们的想法是,将Actual Result:
Column3 Column4 Column5 Column1 Column2
Expected Result:
Column1 Column2 Column3 Column4 Column5
放入自己的QWidget
。事先它是窗口A的中心窗口小部件,之后A应该有一个填充窗口小部件,新窗口B产生,窗口小部件作为自己的中心窗口小部件。
所以这是设置:
QMainWindow
但是当我尝试时,class DetachedWindow(QtWidgets.QMainWindow):
def __init__(self, window: "MyMainWindow", widget: QtWidgets.QWidget = None, *args):
QtWidgets.QMainWindow.__init__(self, *args)
self.main_window = window
window.set_widget(EmptyWidget(), False) # sets new filler central widget
if widget is not None:
self.setCentralWidget(widget)
widget.setParent(self)
self.show()
class MyMainWindow(QtWidgets.QMainWindow):
# ...
def detach_screen(self):
self.windows.append(DetachedWindow(self, self.current_widget))
只是空的。当我使用DetachedWindow
的构造函数替换widget
中的setCentralWidget
时,它会正确显示。但不是采用小部件。
我在这里缺少什么?
更新:显然删除了小部件。访问其中一个标签的QWidget
功能时,会发生以下错误:
setText
答案 0 :(得分:0)
我不知道为什么,但之后调用widget.show()
解决了这个问题。
class DetachedWindow(QtWidgets.QMainWindow):
def __init__(self, window: "MyMainWindow", widget: QtWidgets.QWidget = None, *args):
QtWidgets.QMainWindow.__init__(self, *args)
self.main_window = window
window.set_widget(EmptyWidget(), False) # sets new filler central widget
self.show()
if widget is not None:
self.setCentralWidget(widget)
widget.setParent(self)
widget.show()
class MyMainWindow(QtWidgets.QMainWindow):
# ...
def detach_screen(self):
self.windows.append(DetachedWindow(self, self.current_widget))
对此有何解释?它似乎并不像预期的那样......