擅长:python、mysql、java
<p>看来行为应该是这样的:</p>
<ul>
<li>当行edit<strong>失去</strong>输入焦点时,显示四舍五入的存储值</li>
<li>当行edit<strong>获得</strong>输入焦点时,完整显示存储值</li>
<li>当编辑完成时,以日志格式存储完整的当前值</li>
</ul>
<p>这意味着当按下return或enter时,取整<strong>不能</strong>(因为在这种情况下,行编辑不会失去焦点)。在</p>
<p>通过以下更改可以实现上述行为:</p>
<pre><code>from PyQt4 import QtCore, QtGui
class InputNumFields(QtGui.QWidget):
...
def _init_UI(self):
self.edit_input = QtGui.QLineEdit()
self.edit_input.installEventFilter(self)
...
def eventFilter(self, source, event):
if (event.type() == QtCore.QEvent.FocusIn and
source is self.edit_input):
self.get_entries()
return super(InputNumFields, self).eventFilter(source, event)
def get_entries(self):
value = 10**(self.edit_input_float/10)
if not self.edit_input.hasFocus():
value = round(value, 3)
self.edit_input.setText(str(value))
</code></pre>
<p>附言:</p>
<p>您可能应该在示例中添加一个按钮或其他内容,以便测试更改焦点的效果。在</p>