python和pyQT中的bubble聊天权重

时间:2016-11-14 18:05:05

标签: python qt pyqt

我正在开发一个聊天应用程序,用户可以通过程序聊天。 我现在正在研究的是模拟短信程序中的气泡,到目前为止我所做的就是:

 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_())

此代码正常运行,但我希望添加QPushButtonQLineEditQTextBrowser。因此,当用户写入内容并单击按钮时,气泡将保留用户写入的文本。

有人有任何想法可以帮助我吗?

0 个答案:

没有答案