[英]Move QWidget from one window to another (in PyQt)
這個想法是,將QWidget
彈出到自己的QMainWindow
。 之前它是窗口A的中央窗口小部件,之后A應該具有填充器窗口小部件,會產生一個新窗口B,並將窗口小部件作為其自己的中心窗口小部件。
所以這是設置:
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
只是空的。 當我用QWidget
的構造函數替換setCentralWidget
中的widget
時,它會正確顯示。 但不是采用的小部件。
我在這里想念什么?
更新 :顯然該小部件已刪除。 訪問其標簽之一的setText
函數時,發生以下錯誤:
RuntimeError: wrapped C/C++ object of type QLabel has been deleted
我不知道為什么,但是隨后調用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))
有什么解釋嗎? 看來這似乎並沒有按預期工作...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.