PyQt,小部件没有显示
我在Python Qt4中使用了这个hort程序
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
color = QtGui.QColor(99, 0, 0)
class colorButton(QtGui.QWidget):
def __init__(self, args):
QtGui.QWidget.__init__(self,args)
self.setGeometry(150, 22, 50, 50)
self.setStyleSheet("QWidget { background-color: %s }" % color.name())
class ColorDialog(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(40, 40, 220, 100)
self.setWindowTitle('ColorDialog')
button=colorButton(self)
app = QtGui.QApplication(sys.argv)
cd = ColorDialog()
cd.show()
app.exec_()
插入器不会给我任何错误,但“彩色”小部件不会显示。 为什么? 谢谢
您的类colorButton
继承自QWidget
,但您正在构造函数中调用QPushButton.__init__()
。 也许你想要它从QPushButton
继承?
通过使用以下类定义,您的代码适用于我:
class colorButton(QtGui.QPushButton):
def __init__(self, *args):
QtGui.QPushButton.__init__(self, *args)
self.setGeometry(150, 22, 50, 50)
self.setStyleSheet("QWidget { background-color: %s }" % color.name())
你需要给widget一个paintEvent。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
color = QtGui.QColor(99, 0, 0)
class colorButton(QtGui.QWidget):
def __init__(self, args):
QtGui.QWidget.__init__(self,args)
self.setGeometry(150, 22, 50, 50)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
painter.fillRect(event.rect(), color)
class ColorDialog(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(40, 40, 220, 100)
self.setWindowTitle('ColorDialog')
button=colorButton(self)
app = QtGui.QApplication(sys.argv)
cd = ColorDialog()
cd.show()
app.exec_()
尝试将autoFillBackground设置为True,然后再更改颜色(setStylesheet调用之前)。 我认为你需要设置托盘。 此评论假设您的意思是“该窗口小部件的颜色未显示”。 请查看下面说明的语法是否适用于Qt4.3,而我没有检查最新的语法。 设置托盘后,不需要设置样式表。
class colorButton(QtGui.QWidget)
def __init__(self, args):
QtGui.QPushButton.__init__(self,args)
self.setGeometry(150, 22, 50, 50)
self.setAutoFillBackground(True)
plt = QtGui.QPalette()
plt.setColor(QtGui.QPalette.Active,QtGui.QPalette.Window,color)
plt.setColor(QtGui.QPalette.Inactive,QtGui.QPalette.Window,color)
plt.setColor(QtGui.QPalette.Disabled,QtGui.QPalette.Window,color
self.setPalette(plt)
#self.setStyleSheet("QWidget { background-color: %s }" % color.name())
链接地址: http://www.djcxy.com/p/77397.html