簡體   English   中英

PyQt:如何向QTextEdit添加新選項卡?

[英]PyQt: How to add new tabs to QTextEdit?

我需要添加一個新標簽,但出現問題。 我想在主窗口中添加新選項卡,並保留類Editor() 我無需創建類Editor()就可以做到這一點,但需要這樣做。 對不起我的英語不好。

這是我的代碼:


from PyQt4 import QtGui
from PyQt4 import QtCore


class Main(QtGui.QMainWindow):

    def __init__(self):
        super(Main, self).__init__()

        self.initUi()

    def initUi(self):
        self.setWindowTitle("Editor")
        self.resize(640, 480)
        self.edit = Editor()

        newAc = QtGui.QAction('New', self)
        newAc.setShortcut('Ctrl+N')
        newAc.triggered.connect(self.new_)

        menu = self.menuBar()
        filemenu = menu.addMenu('&File')
        filemenu.addAction(newAc)

        self.tab = QtGui.QTabWidget(self)
        self.setCentralWidget(self.tab)


class Editor(QtGui.QTextEdit):

    def __init__(self, parent=None):
        super(Editor, self).__init__(parent)


    def new_(self):
        tab = QtGui.QTextEdit(self.tab)
        self.tab.addTab(tab, 'Untitled')

def main():
    import sys
    app = QtGui.QApplication(sys.argv)
    w = Main()
    w.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

如果要在兩個(或多個)選項卡上具有相同的文本,則可以使用相同的Editor類,但如果沒有,則需要為每個選項卡實例化Editor對象。

您的代碼也有一些問題:

1-您正在處理Editor對象中的選項卡。 相反,您必須在“ Main級別處理選項卡。

2-創建Main對象時要添加的“默認”選項卡沒有任何相關的QTextEdit更改:

self.tab = QtGui.QTabWidget(self)
self.setCentralWidget(self.tab)     # <---- tab without QTextEdit

添加:

self.tab = QtGui.QTabWidget(self)
self.editor = Editor(self.tab)      # editor receives self.tab widget as parent.
self.setCentralWidget(self.tab) 

您還需要在Main之前定義Editor類。

3- Main對象沒有任何稱為new_方法,編輯器有。 所以這行:

newAc.triggered.connect(self.new_)

這是不對的。

因此您的代碼可能如下所示:

from PyQt4 import QtGui
from PyQt4 import QtCore


class Editor(QtGui.QTextEdit):

    def __init__(self, parent=None):
        super(Editor, self).__init__(parent)


class Main(QtGui.QMainWindow):

    def __init__(self, parent=None):
        super(Main, self).__init__(parent)

        self.initUi()

    def initUi(self):
        self.setWindowTitle("Editor")
        self.resize(640, 480)

        newAc = QtGui.QAction('New', self)
        newAc.setShortcut('Ctrl+N')
        newAc.triggered.connect(self.new_)

        menu = self.menuBar()
        filemenu = menu.addMenu('&File')
        filemenu.addAction(newAc)

        self.tab = QtGui.QTabWidget(self)
        self.setCentralWidget(self.tab)
        self.tab.addTab(Editor(), "New Text")

    def new_(self):
        self.tab.addTab(Editor(), "New text")


def main():
    import sys
    app = QtGui.QApplication(sys.argv)
    w = Main()
    w.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM