如何将 child window 放入主 window(PyQt)
How to put a child window inside a main window(PyQt)
我在 Whosebug 和 google 中查看了几天,但我发现的所有示例都不起作用。
我想要的是让我的 parent window 有菜单,然后从那个菜单调用其他 child windows 和 execute/show 他们在 parent window.
里面
我试过在parentwindow里放一个widget,然后在里面调用childwindow,用MDIArea,但是没用。
观察:
我的屏幕文件是从 Qt 设计器生成的,我正在制作分离的 classes 来操作小部件、按钮等,以使一切更有条理。
我使用 QtDesigner 在主 window 中创建了 MdiArea,它们在 class 中通过单击菜单触发,我在里面调用了 subwindow(也是使用 QtDesigner 创建的小部件) MdiArea.
from resources.SubWindowQtDes import Ui_SubWindow
from resources.MainWindowQTDes import Ui_MainWindow
class cadastraAluno(Ui_SubWindow,Ui_MainWindow):
def __init__(self, parent=None):
super(cadastraAluno, self).__init__(parent = None)
dialog = Ui_SubWindow()
window = Ui_MainWindow()
mdi = window.mdiArea
mdi.addSubWindow(dialog, flags = 0)
dialog.show()
这是我通常为 child windows 做的事情:
class subwindow(QtGui.QWidget):
def createWindow(self,WindowWidth,WindowHeight):
parent=None
super(subwindow,self).__init__(parent)
selt.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.resize(WindowWidth,WindowHeight)
class mainwindow(QtGui.QMainWindow):
def __init__(self, parent=None):
[...]
def createsASubwindow(self):
self.mySubwindow=subwindow()
self.mySubwindow.createWindow(500,400)
#make pyqt items here for your subwindow
#for example self.mySubwindow.button=QtGui.QPushButton(self.mySubwindow)
self.mySubwindow.show()
这样你就有了一个子window,它总是在主 window 之上并且只能被实例化一次。
希望对您有所帮助
我找到了一个方法。我使用 self.show()
而不是 dialog.show()
和 self.mdiArea
而不是 window.mdiArea
。
现在我关闭 window 并用我想要的小部件再次显示它。我想找到一种方法来 "refresh" window。但这是另一个话题。
非常感谢大家。
我在 Whosebug 和 google 中查看了几天,但我发现的所有示例都不起作用。
我想要的是让我的 parent window 有菜单,然后从那个菜单调用其他 child windows 和 execute/show 他们在 parent window.
里面我试过在parentwindow里放一个widget,然后在里面调用childwindow,用MDIArea,但是没用。
观察: 我的屏幕文件是从 Qt 设计器生成的,我正在制作分离的 classes 来操作小部件、按钮等,以使一切更有条理。
我使用 QtDesigner 在主 window 中创建了 MdiArea,它们在 class 中通过单击菜单触发,我在里面调用了 subwindow(也是使用 QtDesigner 创建的小部件) MdiArea.
from resources.SubWindowQtDes import Ui_SubWindow
from resources.MainWindowQTDes import Ui_MainWindow
class cadastraAluno(Ui_SubWindow,Ui_MainWindow):
def __init__(self, parent=None):
super(cadastraAluno, self).__init__(parent = None)
dialog = Ui_SubWindow()
window = Ui_MainWindow()
mdi = window.mdiArea
mdi.addSubWindow(dialog, flags = 0)
dialog.show()
这是我通常为 child windows 做的事情:
class subwindow(QtGui.QWidget):
def createWindow(self,WindowWidth,WindowHeight):
parent=None
super(subwindow,self).__init__(parent)
selt.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.resize(WindowWidth,WindowHeight)
class mainwindow(QtGui.QMainWindow):
def __init__(self, parent=None):
[...]
def createsASubwindow(self):
self.mySubwindow=subwindow()
self.mySubwindow.createWindow(500,400)
#make pyqt items here for your subwindow
#for example self.mySubwindow.button=QtGui.QPushButton(self.mySubwindow)
self.mySubwindow.show()
这样你就有了一个子window,它总是在主 window 之上并且只能被实例化一次。
希望对您有所帮助
我找到了一个方法。我使用 self.show()
而不是 dialog.show()
和 self.mdiArea
而不是 window.mdiArea
。
现在我关闭 window 并用我想要的小部件再次显示它。我想找到一种方法来 "refresh" window。但这是另一个话题。
非常感谢大家。