PyQt短信泡泡小工具

时间:2013-08-04 20:47:00

标签: python qt sms pyqt

我正在编写一个应用程序,我想在其中进行显示对话。我正在寻找一些小部件,例如,教程如何制作/绘制自己的小部件/视图。我想对iphone短信应用程序有一个熟悉的外观。

问候。

1 个答案:

答案 0 :(得分:1)

此示例显示如何在重载的QLabel中自定义绘制。在paintEvent中的画家上设置不同的笔/画笔,以更改气泡的颜色。

from PyQt4 import QtCore, QtGui

class Bubble(QtGui.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(QtGui.QWidget):

    def __init__(self,text,left=True):
        super(MyWidget,self).__init__()

        hbox = QtGui.QHBoxLayout()

        label = Bubble(text)

        if not left:
            hbox.addSpacerItem(QtGui.QSpacerItem(1,1,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Preferred))

        hbox.addWidget(label)

        if left:
            hbox.addSpacerItem(QtGui.QSpacerItem(1,1,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Preferred))            

        hbox.setContentsMargins(0,0,0,0)

        self.setLayout(hbox)
        self.setContentsMargins(0,0,0,0)

if __name__ == '__main__':
    a = QtGui.QApplication([])
    w = QtGui.QWidget()

    vbox = QtGui.QVBoxLayout()

    vbox.addWidget(MyWidget("Left side"))
    vbox.addWidget(MyWidget("Right side",left=False))
    vbox.addWidget(MyWidget("Left side"))
    vbox.addWidget(MyWidget("Left side"))

    w.setLayout(vbox)
    w.show()

    a.exec_()

你最终会得到以下内容。

enter image description here