我需要帮助PyQt
。我有一个简单的PyQt
小部件作为例子。它有一个简单的背景颜色。但是我不明白为什么当我给它一个颜色参数列表时它显示黑色__init__ (self, color = [100, 150 ,200 ,255])
。
但我希望它通过仅向颜色参数发送数字列表来正确显示颜色。
我正在尝试将此列表转换为字符串,然后将其发送到self.p.setColor()
. 但它也不起作用。仅显示黑色作为背景。
但是,如果我QtGui.QColor(150, 200, 100, 255)
直接发送到 color 参数,它会起作用。
import sys
import os
from PyQt5 import QtGui
from PyQt5 import QtCore
from PyQt5 import QtWidgets
class ColorBox(QtWidgets.QMainWindow):
def __init__(self, color = [100, 200, 150, 255]):
super(ColorBox, self).__init__()
self.CoCo = ",".join(str(i) for i in color)
print (self.CoCo)
self.setFixedSize(200, 200)
self.setAutoFillBackground(True)
self.p = self.palette()
self.p.setColor(self.backgroundRole(), QtGui.QColor(self.CoCo))
self.setPalette(self.p)
self.setObjectName("Color_cube")
def main():
app = QtWidgets.QApplication(sys.argv)
main = ColorBox()
main.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
所以这不起作用:
def __init__(self, color = [100, 200, 150, 255]):
但是,如果我将颜色属性直接发送到 self.p.setColor(),则效果很好:
def __init__(self, color = QtGui.QColor(100, 200, 150, 255):
我应该怎么做才能通过将数字列表转换为颜色值来使第一个变体工作?因为我需要将此颜色参数存储在 JSON 文件中。我不能存储整条线"QtGui.QColor(100, 200, 150, 255)"
非常感谢您的帮助!
那这个呢?
import sys
import os
from PyQt5 import QtGui
from PyQt5 import QtCore
from PyQt5 import QtWidgets
class ColorBox(QtWidgets.QMainWindow):
def __init__(self, color = [100, 200, 150, 255]):
super(ColorBox, self).__init__()
if isinstance(color, (list, tuple) ):
myColor = QtGui.QColor( *color )
elif isinstance( color, QtGui.QColor ):
myColor = color
else:
raise TypeError
self.setFixedSize(200, 200)
self.setAutoFillBackground(True)
self.p = self.palette()
self.p.setColor(self.backgroundRole(), myColor )
self.setPalette(self.p)
self.setObjectName("Color_cube")
def main():
app = QtWidgets.QApplication(sys.argv)
###all three work
# ~ main = ColorBox()
# ~ main = ColorBox( (30,0,180,250) )
main = ColorBox( QtGui.QColor( 250, 0, 180, 250 ) )
main.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
如果是list
或者tuple
您QColor
通过解压缩它们在本地创建。如果它QColor
已经是你离开它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句