简体   繁体   English

如何在pyqt4中添加包含QtextEdit的子窗口

[英]how to add sub windows that contains QtextEdit in pyqt4

I am building a text Editor in python using pyqt4 and i want to add sub windows to the mdi Area that should contain a QTextEdit on every click of new(menu Item).So, i want to know how this can be achieved. 我正在使用pyqt4在python中构建文本编辑器,我想向子窗口添加mdi区域,每次单击new(菜单项)都应包含QTextEdit.so,我想知道如何实现此目的。

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
    MainWindow.setObjectName(_fromUtf8("MainWindow"))
    MainWindow.resize(800, 600)
    self.centralwidget = QtGui.QWidget(MainWindow)
    self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
    self.gridLayout = QtGui.QGridLayout(self.centralwidget)
    self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
    self.mdiArea = QtGui.QMdiArea(self.centralwidget)
    self.mdiArea.setObjectName(_fromUtf8("mdiArea"))
    self.gridLayout.addWidget(self.mdiArea, 0, 0, 1, 1)
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtGui.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
    self.menubar.setObjectName(_fromUtf8("menubar"))
    self.menuFile = QtGui.QMenu(self.menubar)
    self.menuFile.setObjectName(_fromUtf8("menuFile"))
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtGui.QStatusBar(MainWindow)
    self.statusbar.setObjectName(_fromUtf8("statusbar"))
    MainWindow.setStatusBar(self.statusbar)
    self.actionNew = QtGui.QAction(MainWindow)
    self.actionNew.setObjectName(_fromUtf8("actionNew"))
    self.actionExit = QtGui.QAction(MainWindow)
    self.actionExit.setObjectName(_fromUtf8("actionExit"))
    self.menuFile.addAction(self.actionNew)
    self.menuFile.addAction(self.actionExit)
    self.menubar.addAction(self.menuFile.menuAction())
    #
    self.Doc_1 = QtGui.QWidget()
    self.Doc_1.setObjectName(_fromUtf8("Doc_1"))
    self.gridLayout_2 = QtGui.QGridLayout(self.Doc_1)
    self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
    self.textEdit = QtGui.QTextEdit(self.Doc_1)
    self.textEdit.setMinimumSize(QtCore.QSize(100, 200))
    self.textEdit.setMaximumSize(QtCore.QSize(741, 16777215))
    self.textEdit.setObjectName(_fromUtf8("textEdit"))
    self.gridLayout_2.addWidget(self.textEdit, 0, 0, 1, 1)
    #

    self.retranslateUi(MainWindow)
    QtCore.QObject.connect(self.actionExit, QtCore.SIGNAL(_fromUtf8("triggered()")), MainWindow.close)
    QtCore.QObject.connect(self.actionNew, QtCore.SIGNAL(_fromUtf8("triggered()")), self.opennew)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)
def opennew(self):
    self.mdiArea.addSubWindow(Doc_1);

def retranslateUi(self, MainWindow):
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
    self.Doc_1.setWindowTitle(_translate("MainWindow", "Doc_1", None))
    self.menuFile.setTitle(_translate("MainWindow", "file", None))
    self.actionNew.setText(_translate("MainWindow", "new", None))
    self.actionNew.setShortcut(_translate("MainWindow", "Ctrl+N", None))
    self.actionExit.setText(_translate("MainWindow", "exit", None))
    self.actionExit.setShortcut(_translate("MainWindow", "Ctrl+X", None))
  1. Sir, you could have a list of QTextEdit and have your own control on it, going forward and backward as you need. 主席先生,您可以拥有一个QTextEdit列表并对其进行控制,并根据需要进行前进和后退。
  2. Another option would be not to have many TextEdit but only save their documents. 另一个选择是不具有多个TextEdit,而仅保存其文档。 Each time you click on "New Doc" you would storage its document and reset the current to a new one. 每次单击“新文档”,您将存储其文档并将当前文档重置为新文档。 Also would need to control it by your self. 也需要自己控制。
  3. There are many ways to implement it, you just gotta do what would fit better to what you really need. 有很多方法可以实现它,您只需要做一些适合您实际需要的事情即可。 Just got you some ideas. 刚给您一些想法。

There are many cool tutorials you could go based on. 您可以基于许多不错的教程。

Here is a really amazing one. 真是一个了不起的。 Helped me a lot in the very beginning. 一开始对我有很大帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM