需求:
在QTextEdit控件的右上角增加一个复制按钮;
from PyQt5.QtWidgets import QPushButton, QTextEdit, QWidget, QApplication, QVBoxLayout
from PyQt5.QtGui import QPaintEvent
import sys
class MyWidow(QWidget):
def __init__(self):
super(MyWidow, self).__init__()
self.resize(300, 300)
self.text = QTextEdit()
self.vLayout = QVBoxLayout(self)
self.vLayout.addWidget(self.text)
# 将copyButton的父类指定为self.text控件
self.copyButton = QPushButton(self.text)
self.copyButton.resize(20, 20)
# qss不支持background-size属性,所以没办法将背景图片设置为自使用大小,用border-image默认自适应大小
self.copyButton.setStyleSheet('border-image: url(./select_servo/images/copy.png);')
def paintEvent(self, a0: QPaintEvent) -> None:
# 在paintEvent中修改按钮的位置,如果不在该事件下无法获取到self.text在vlayout布局后的宽度
copyButtonX = self.text.width()-self.copyButton.width()
self.copyButton.move(copyButtonX, 0)
app = QApplication(sys.argv)
win = MyWidow()
win.show()
sys.exit(app.exec_())