我正在开发一个聊天应用程序,用户可以通过程序聊天。 我现在正在研究的是模拟短信程序中的气泡,到目前为止我所做的就是:
from PyQt5 import QtCore, QtGui,QtWidgets
import sys
class Bubble(QtWidgets.QLabel):
def __init__(self,text):
super(Bubble,self).__init__(text)
self.setContentsMargins(5,5,5,5)
def paintEvent(self, e):
p = QtGui.QPainter(self)
p.setRenderHint(QtGui.QPainter.Antialiasing,True)
p.drawRoundedRect(0,0,self.width()-1,self.height()-1,5,5)
super(Bubble,self).paintEvent(e)
class MyWidget(QtWidgets.QWidget):
def __init__(self,text,left=True):
super(MyWidget,self).__init__()
hbox = QtWidgets.QHBoxLayout()
label = Bubble(text)
if left is not True:
hbox.addSpacerItem(QtWidgets.QSpacerItem(1,1,
QtWidgets.QSizePolicy.Expanding,QtWidgets.QSizePolicy.Preferred))
hbox.addWidget(label)
if left is True:
hbox.addSpacerItem(QtWidgets.QSpacerItem(1,1,
QtWidgets.QSizePolicy.Expanding,QtWidgets.QSizePolicy.Preferred))
hbox.setContentsMargins(0,0,0,0)
self.setLayout(hbox)
self.setContentsMargins(0,0,0,0)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(MyWidget("Left side"))
vbox.addWidget(MyWidget("Right side",left=False))
w.setLayout(vbox)
w.show()
sys.exit(app.exec_())
此代码正常运行,但我希望添加QPushButton
,QLineEdit
和QTextBrowser
。因此,当用户写入内容并单击按钮时,气泡将保留用户写入的文本。
有人有任何想法可以帮助我吗?