2017-02-26 84 views
0

这是一个有趣的两个症状闪烁的光标:PyQt5 - 在同一时间

两个不同的QLineEdit在同一对话框中的字段都已经在闪烁时,对话本身具有焦点的同时游标。

video

(目的是为了阻止在没有焦点领域中的闪烁,因为它会导致用户混淆和潜在的用户错误。)

当您选择不同的窗口(即从相关对话中移除焦点),其中一个字段仍然有一个闪烁的光标。

当您再次激活该对话框时,两个字段都会再次闪烁。

如果在任何一个字段中单击鼠标左键,则闪烁的光标将停止在其他字段中,如预期的那样。

焦点(即捕获键盘输入的字段)似乎表现得如您所期望的那样,即一次只有一个字段接收键盘输入。

标签序列按预期工作。

这是在QtDesigner内建的,但在下游代码中进行了大量修改。任何想法如何发生?

一些类似的问题讨论了具有自己的事件循环的对话框或类似的问题?

+0

这个问题是相当无意义的,除非你能提供[mcve]。 – ekhumoro

+0

我确实认为有一个例外的例外情况,当症状非常明确时,创建测试用例的复杂性非常大。显然,它将观众限制在可能看到类似情况的人群中。 –

+0

没有代码太复杂,无法开发测试用例。这只是分而治之的问题。识别特定的错误(并研究如何修复)有时可能非常困难,但创建测试用例很容易。 (当然,这是假设你已经排除了平台/系统特定问题的可能性)。 – ekhumoro

回答

0

通过反复试验发现了这个解决方案:只需'打嗝'焦点,即将其设置为您不想闪烁的那个(本例中为messageField),然后将其设置为您想要的那个眨眼(队场):

self.newEntryWidget.ui.messageField.setFocus() 
self.newEntryWidget.ui.teamField.setFocus() 

我不知道为什么会发生这种情况,但它似乎工作。希望别人会觉得这很有用。