【问题标题】:When I click QPushButton, I want to change QTextBrowser's text当我单击 QPushButton 时,我想更改 QTextBrowser 的文本
【发布时间】:2021-04-18 06:43:47
【问题描述】:

我的代码有 2 个问题。

  1. 我希望 QPushButton 高于 QTextBrowser。
  • 但是,我不能。您可以检查图像。
  1. 当我单击 QPushButton 时,我想更改 QTextBrowser 的文本。
  • 但是,我有一个错误。 -> 错误消息:“MyApp”对象没有属性“text_area”

这是我的代码。 我想我没有 Python 编程过程。

# test.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QTextBrowser

class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        btn2 = QPushButton(self)
        btn2.setText('Button&2')
        btn2.setGeometry(20,20,100,100)
        btn2.clicked.connect(self.callme)

        # Add QTextBrowser
        text_area = QTextBrowser(self)
        text_area.setGeometry(120, 160, 270, 120)
        text_area.setText('Before Edit')

        vbox = QVBoxLayout()
        vbox.addWidget(btn2)

        self.setLayout(vbox)
        self.setWindowTitle('QPushButton')
        self.setGeometry(200, 200, 500, 600)
        self.show()

    def callme(self):
        self.text_area.setText('After Edit')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

【问题讨论】:

    标签: python pyqt5 qpushbutton qtextbrowser


    【解决方案1】:

    基本上,问题在于您在顶部使用了text_edit,但在底部使用了self.text_edit。然后,要将按钮放在顶部,请使用 vbox.setAlignment(Qt.AlignTop) 将 vbox 对齐设置为顶部

    试试这个:

    import sys
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QTextBrowser
    
    class MyApp(QWidget):
    
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            btn2 = QPushButton(self)
            btn2.setText('Button&2')
            btn2.setGeometry(20,20,100,100)
            btn2.clicked.connect(self.callme)
    
            # Add QTextBrowser
            self.text_area = QTextBrowser(self)
            self.text_area.setGeometry(120, 160, 270, 120)
            self.text_area.setText('Before Edit')
    
            vbox = QVBoxLayout()
            vbox.addWidget(btn2)
            vbox.setAlignment(Qt.AlignTop)
    
            self.setLayout(vbox)
            self.setWindowTitle('QPushButton')
            self.setGeometry(200, 200, 500, 600)
            self.show()
    
        def callme(self):
            self.text_area.setText('After Edit')
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        ex = MyApp()
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 2019-02-28
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2015-05-23
      • 2019-09-22
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多