簡體   English   中英

Python pyqt4 從函數訪問 QTextEdit

[英]Python pyqt4 access QTextEdit from function

我正在嘗試編寫一個記事本應用程序,到目前為止我有一個沒有功能的 gui。 我的 gui 的每個元素都在單獨的函數中,然后在init方法中調用。 例如,在 create_new_file(self) 函數中,我試圖從 QTextEdit .toPlainText() 方法獲取文本,但是如何從 text_edit_area(self) 函數訪問此字段?

import sys
from PyQt4 import QtGui, QtCore


class Editor(QtGui.QMainWindow):

    def __init__(self):
        super(Editor, self).__init__()
        self.setGeometry(100, 100, 500, 500)
        self.setWindowTitle('Text Editor')
        self.setWindowIcon(QtGui.QIcon('editor.png'))

        self.statusBar()
        self.main_menu()
        self.text_edit_area()
        self.toolbar()

        self.show()


    def main_menu(self):

        # CREATE MAIN MENU
        menu = self.menuBar()

        # MENU ACTIONS
        file_exit_action = QtGui.QAction('&Exit', self)
        file_exit_action.setShortcut('Ctrl+Q')
        file_exit_action.setStatusTip('Close application')
        file_exit_action.triggered.connect(self.close_application)

        file_new_file_action = QtGui.QAction('&New File', self)
        file_new_file_action.setShortcut('Ctrl+N')
        file_new_file_action.setStatusTip('Create a new file')
        file_new_file_action.triggered.connect(self.create_new_file)

        file_open_file_action = QtGui.QAction('&Open File', self)
        file_open_file_action.setShortcut('Ctrl+O')
        file_open_file_action.setStatusTip('Open file')
        file_open_file_action.triggered.connect(self.open_file)

        file_save_file_action = QtGui.QAction('&Save File', self)
        file_save_file_action.setShortcut('Ctrl+S')
        file_save_file_action.setStatusTip('Save opened file')
        file_save_file_action.triggered.connect(self.save_file)

        edit_undo_action = QtGui.QAction('&Undo', self)
        edit_undo_action.triggered.connect(self.undo)

        format_change_font_action = QtGui.QAction('&Change Font', self)
        format_change_font_action.triggered.connect(self.change_font)

        view_maximize_action = QtGui.QAction('&Maximize', self)
        view_maximize_action.triggered.connect(self.maximize)

        help_about_action = QtGui.QAction('&About', self)
        help_about_action.triggered.connect(self.about)


        # FILE MENU
        file_menu = menu.addMenu('&File')
        file_menu.addAction(file_exit_action)
        file_menu.addAction(file_new_file_action)
        file_menu.addAction(file_open_file_action)
        file_menu.addAction(file_save_file_action)


        # EDIT MENU
        edit_menu = menu.addMenu('&Edit')
        edit_menu.addAction(edit_undo_action)

        # FORMAT MENU
        format_menu = menu.addMenu('&Format')
        format_menu.addAction(format_change_font_action)

        # VIEW MENU
        view_menu = menu.addMenu('&View')
        view_menu.addAction(view_maximize_action)

        # HELP MENU
        help_menu = menu.addMenu('&Help')
        help_menu.addAction(help_about_action)


    def toolbar(self):

        # CREATE MAIN TOOLBAR
        tool_bar = self.addToolBar('main toolbar')


        # TOOLBAR ACTION
        toolbar_new_file_action = QtGui.QAction(QtGui.QIcon('new_file.png'),
                                                '&New File', self)
        toolbar_new_file_action.triggered.connect(self.create_new_file)

        toolbar_open_file_action = QtGui.QAction(QtGui.QIcon('open_file.png'),
                                                 '&Open File', self)
        toolbar_open_file_action.triggered.connect(self.open_file)


        # ADD TOOLBAR ACTIONS
        tool_bar.addAction(toolbar_new_file_action)
        tool_bar.addAction(toolbar_open_file_action)





    def text_edit_area(self):
        text_edit = QtGui.QTextEdit()
        self.setCentralWidget(text_edit)



    def close_application(self):
        choice = QtGui.QMessageBox.question(self,
                                            'Confirmation',
                                            'Do you really want to quit?',
                                            QtGui.QMessageBox.Yes |
                                            QtGui.QMessageBox.No)
        if choice == QtGui.QMessageBox.Yes:
            sys.exit()
        else:
            pass


    def create_new_file(self):
        print('create new file')


    def open_file(self):
        print('open file')


    def save_file(self):
        print('saving file')


    def undo(self):
        print('undo')


    def maximize(self):
        print('maximize')


    def change_font(self):
        print('change font')


    def about(self):
        print('about')


def main():
    app = QtGui.QApplication(sys.argv)
    gui = Editor()
    sys.exit(app.exec_())



if __name__ == '__main__':
    main()

您可以創建一個實例屬性來存儲對 QTextEdit 的引用

self.text_edit = QtGui.QTextEdit()

或者您通過調用 QMainWindow 的centralWidget()方法檢索引用

您應該創建自己的自定義 QTextEdit。 一些繼承自 QTextEdit 並以您想要的方式個性化的類。

您可以參考許多很酷的教程。

是一個非常驚人的。 一開始對我幫助很大。

暫無
暫無

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

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