【问题标题】:QLineEdit color change for a flash when return pressed in PySide在 PySide 中按下返回时,QLineEdit 的颜色会发生变化
【发布时间】:2016-11-10 15:42:35
【问题描述】:

我有一个 QLineEdit 对象,并且连接了内置信号“returnPressed”以执行某些任务。但是当我单击返回时,我想通过在短时间内闪烁不同的颜色并反转回原始颜色来通知用户按键。虽然,这可以通过设置样式表和 time.sleep() 函数更改背景颜色来完成,但我想要一种直接的单行方法来完成此操作。

【问题讨论】:

  • 我不认为有一个单一的解决方案。但是设置样式表并在一段时间后将其重新设置有什么问题?唯一重要的是:不要在应用程序中使用time.sleep()您可以使用QTimer
  • self.lineEdit_CycleTime.setStyleSheet("背景颜色: rgb(5, 8, 5)") time.sleep(0.5) self.lineEdit_CycleTime.setStyleSheet("背景颜色: rgb(125, 125, 125)")
  • 请建议使用 QTimer 代替上述代码的 time.sleep()

标签: qt pyqt pyside


【解决方案1】:

正如我在 cmets 中所建议的,您需要避免使用 time.sleep()。相反,您可以使用QTimerQTimer 的静态 singleShot 方法可以在等待 500 毫秒后调用函数。在这种情况下,您要调用的函数可以是 lambda 函数,它设置样式表。

self.lineEdit_CycleTime.setStyleSheet("background-color: rgb(5, 8, 5)")
QtCore.QTimer.singleShot(500, lambda :self.lineEdit_CycleTime.setStyleSheet("background-color: rgb(125,125,125)") )

【讨论】:

  • 您好,运行顺利。非常感谢。只是想知道为什么在这里使用 time.sleep() 代替 QTimer.singleshot() 是个坏主意。
  • time.sleep() 使程序真正进入睡眠状态。虽然这在控制台应用程序中是完全可以接受的,但它会在图形用户界面中引起麻烦。 GUI 需要始终保持响应,以便用户在其中执行操作(移动鼠标、放置光标)并监听事件。如果程序处于休眠状态,它就无法执行这些任务,并且窗口管理系统通常会将无响应的程序报告为崩溃。 (另见here
猜你喜欢
  • 2014-09-04
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
相关资源
最近更新 更多