Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我最多可以更改按钮背景多少次?_Python_Python 3.x_Pyside2 - Fatal编程技术网

Python 我最多可以更改按钮背景多少次?

Python 我最多可以更改按钮背景多少次?,python,python-3.x,pyside2,Python,Python 3.x,Pyside2,所以,我试图用我传递的颜色和白色之间的颜色来闪烁按钮。在代码崩溃后,它似乎只闪烁了这么多次。 我已经尝试过用不同的眨眼频率来实现眨眼,而且 它还会在某个时候破裂吗 在'a'中,我有类似“背景色:rgb(255,0,0)”的字符串 在“计时”中,我有一个类似于[208,280]的列表,或者它可能是[48,32,48,32100280],这表示开启和关闭计时,“第零个索引”表示开启,“索引1”表示关闭时间,并遵循此模式,依此类推 为True时: i=0 而我

所以,我试图用我传递的颜色和白色之间的颜色来闪烁按钮。在代码崩溃后,它似乎只闪烁了这么多次。 我已经尝试过用不同的眨眼频率来实现眨眼,而且 它还会在某个时候破裂吗

  • 在'a'中,我有类似“背景色:rgb(255,0,0)”的字符串
  • 在“计时”中,我有一个类似于[208,280]的列表,或者它可能是[48,32,48,32100280],这表示开启和关闭计时,“第零个索引”表示开启,“索引1”表示关闭时间,并遵循此模式,依此类推
为True时:
i=0
而我
self.head1、self.head2、self.head3都有这样的列表[“背景色:rgb(255,0,0)”,打开和关闭模式列表,头号#]

现在,我正与三个负责人一起工作

def flash(self):
    obj1 = threads(self.head1, self.head1_pb)
    obj2 = threads(self.head2, self.head2_pb)
    obj3 = threads(self.head3, self.head3_pb)
    obj1.start()
    time.sleep(.02)
    obj2.start()
    time.sleep(.02)
    obj3.start()

class threads(Thread):

    def __init__(self, a, pb):
         Thread.__init__(self)
         self.p = a
         self.b = pb

    def run(self):

       a = self.p[0]
       timings = self.p[1]
       print(timings[0])
       while True:
           i = 0
           while i < len(timings):
                if self.p[2] == 1:
                   self.b.setStyleSheet("{}".format(a))
                   self.b.update()
                   time.sleep(timings[i]/1000)
                   self.b.setStyleSheet("Background-color: rgb(255,255,255)")
                   self.b.update()
                   time.sleep(timings[i+1]/1000)
                   i = i + 2
               elif self.p[2] == 2:
                   self.b.setStyleSheet("{}".format(a))
                   self.b.update()
                   time.sleep(timings[i]/1000)
                   self.b.setStyleSheet("Background-color: rgb(255,255,255)")
                   self.b.update()
                   time.sleep(timings[i+1]/1000)
                   i = i + 2
              else:
                   self.b.setStyleSheet("{}".format(a))
                   self.b.update()
                   time.sleep(timings[i]/1000)
                   self.b.setStyleSheet("Background-color: rgb(255,255,255)")
                   self.b.update()
                   time.sleep(timings[i+1]/1000)
                   i = i + 2
def闪存(自):
obj1=螺纹(自攻头1,自攻头1_-pb)
obj2=螺纹(自攻头2,自攻头2_pb)
obj3=螺纹(自攻头3,自攻头3_pb)
obj1.start()
时间。睡眠(.02)
obj2.start()
时间。睡眠(.02)
obj3.start()
类线程(线程):
定义初始化(self,a,pb):
线程。\uuuu初始化\uuuuu(自)
self.p=a
self.b=pb
def运行(自):
a=self.p[0]
计时=self.p[1]
打印(计时[0])
尽管如此:
i=0
而我
您可以根据需要多次更改颜色,问题是您不应该使用耗时的循环或time.sleep(),因为它们会阻止生成GUI的eventloop冻结。相反,使用QTimer调用每隔一段时间更改颜色的任务

在以下示例中,创建实现所需功能的自定义按钮:

从PySide2导入QtCore、QtGui、QtWidgets
类按钮(QtWidgets.QPushButton):
定义初始化(self,*args,**kwargs):
超级按钮(按钮,自身)。\uuuuuuuuuuuuuuuuuu初始(*参数,**kwargs)
self._color=QtGui.QColor(“白色”)
timer\u on=QtCore.QTimer(singleShot=True,timeout=self.on\u timeout)
timer\u off=QtCore.QTimer(singleShot=True,timeout=self.on\u timeout)
自身计时器=(计时器打开,计时器关闭)
对于计时器,zip中的函数(self.\u timers,(self.on,self.off)):
timer.timeout.connect(函数)
def设置时间(自身、开启时间、关闭时间):
对于t,zip中的计时器((开启时间、关闭时间)、自身计时器):
定时器设置间隔(t)
@QtCore.Slot()
def on_超时(自身):
计时器=self.sender()
如果计时器不在自身中。\u计时器:
返回
定时器开,定时器关=自身
另一个定时器=定时器关闭,如果定时器为定时器打开,否则定时器打开
另一个_timer.start()
def启动(自):
定时器打开,等于自身定时器
计时器_on.start()
def停止(自):
对于自身中的计时器。\u计时器:
计时器停止()
self.off()
def颜色(自):
返回自我
def setColor(自身,颜色):
如果self.color()==颜色:
返回
自身颜色=颜色
def开启(自我):
自选表格(
“”“按钮{背景色:%s}”“%”(self.color().name(),)
)
def关闭(自我):
自选表格(
“”“按钮{背景色:rgb(255255)}”“”
)
类小部件(qtwidts.QWidget):
def uuu init uuu(self,parent=None):
超级(小部件,自我)。\uuuuu初始化\uuuuuuu(父级)
按钮=按钮()
button.setColor(QtGui.QColor(“鲑鱼”))
按钮。设置时间(208280)
按钮。开始()
#30秒后停止闪烁
#QtCore.QTimer.singleShot(30*1000,按钮停止)
lay=qtwidts.QVBoxLayout(self)
lay.addWidget(按钮)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
应用程序设置样式(“融合”)
w=Widget()
w、 show()
sys.exit(app.exec_())
加号:

当您注意到您有很多数据时,最好创建一个迭代器来节省内存。考虑到上述情况,我创建了一个QPushButton,用于从迭代器获取数据

随机导入
从functools导入部分
从PySide2导入QtCore、QtGui、QtWidgets
def生成_数据():
i=0
当我<1000000时:
color_on=random.randint(10500)
color_off=random.randint(10500)
color=QtGui.QColor(*random.sample(范围(255),3))
产生颜色开,颜色关,颜色
i+=1
类按钮(QtWidgets.QPushButton):
定义初始化_