• 5746阅读
  • 7回复

QPushbutton上如何能实现几种字体同时存在 [复制链接]

上一主题 下一主题
离线qqqwh
 

只看楼主 倒序阅读 楼主  发表于: 2014-08-16
要做9格软键盘,可怎么让QPushbutton 同时显示1和abc 且字体大小不同呢?
离线gnibuoz

只看该作者 1楼 发表于: 2014-08-16
你直接处理成图片不就行了
我就是我,颜色不一样的烟火...
离线qqqwh

只看该作者 2楼 发表于: 2014-08-16
,太麻烦了点吧
离线china_qhope

只看该作者 3楼 发表于: 2014-08-17
正则QReq判断是数字还是字母,根据不同结果设置字体
离线dosmlp

只看该作者 4楼 发表于: 2014-08-18
样式表
直接用html代码就行
离线qqqwh

只看该作者 5楼 发表于: 2014-08-18
正则QReq判断是数字还是字母,根据不同结果设置字体
    我要同时显示,不是分别显示的效果。。。。。。。。。。。。。

样式表  直接用html代码就行
   我试过,用QLabel 的setText可以显示不同字体,用QPushButton的setText就不行,可以给点例子吗?要QPushButton的,不要QLabel的
离线lingdhox

只看该作者 6楼 发表于: 2014-08-25
QLabel 也可以处理点击事件. 没差.
离线dbzhang800

只看该作者 7楼 发表于: 2014-08-27
自己写一个就行了吧?比如
  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3. '''
  4. Copyright (C) 2014 dbzhang800#gmail.com
  5. All rights reserved.
  6. '''
  7. import sys
  8. from PyQt4 import QtCore, QtGui
  9. class CustomButton(QtGui.QPushButton):
  10.     def __init__(self, parent=None):
  11.         super(CustomButton, self).__init__(parent)
  12.         self._richTexts = []
  13.     def appendRichText(self, text, font=None, fgColor=None):
  14.         fm = QtGui.QFontMetricsF(font if font else self.font())
  15.         self._richTexts.append((text, font, fgColor, fm.width(text)))
  16.         self.update()
  17.     def paintEvent(self, evt):
  18.         super(CustomButton, self).paintEvent(evt)
  19.         textWidth = sum([item[3] for item in self._richTexts])
  20.         x0 = (self.width() - textWidth)/2
  21.         painter = QtGui.QPainter(self)
  22.         for text, font, color, w in self._richTexts:
  23.             painter.setPen(QtGui.QColor(color))
  24.             painter.setFont(font if font else self.font())
  25.             painter.drawText(QtCore.QRectF(x0, 0, w, self.height()), QtCore.Qt.AlignCenter, text)
  26.             x0 += w
  27. if __name__ == '__main__':
  28.     app = QtGui.QApplication(sys.argv)
  29.     btn = CustomButton()
  30.     f1 = btn.font()
  31.     f1.setPointSize(20)
  32.     f2 = btn.font()
  33.     f2.setBold(True)
  34.     btn.appendRichText('Red', f1, QtCore.Qt.red)
  35.     btn.appendRichText(' Green ', f2, QtCore.Qt.green)
  36.     btn.appendRichText('Auto')
  37.     btn.show()
  38.     sys.exit(app.exec_())

快速回复
限100 字节
 
上一个 下一个