当我单击 QPushButton 时,我想更改 QTextBrowser 的文本

问题描述

我的代码有两个问题。

  1. 我希望 QPushButton 高于 QTextbrowser。
  • 但是,我不能。您可以检查图像。

    enter image description here

  1. 当我单击 QPushButton 时,我想更改 QTextbrowser 的文本。

这是我的代码。 我想我没有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_())

解决方法

基本上,问题在于您在顶部使用了 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_())

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...