2016-09-19 101 views
0

如何查询在QSpinBox(PyQt)中选定值的小数点位置?假设QSpinBox包含值631.1205并且用户选择3,则答案应该是数十(即6 =数百,3 = Tens,1 = 1,1 =十分之一,2 =百分之一,0 =千分之一,5 =十分之一)千分之一)。PyQt/PySide在QSpinBOX中获取所选值的小数点位置

+1

用户如何选择“3”?如在选择旋转框中的文本3?或者是否有下拉列表?或者是什么?如果用户选择多个号码会怎么样? –

+0

这是正常的QSpinBox(没有任何下拉列表),用户将通过鼠标选择。如果用户选择更多的一位数字,结果将是较高的值(即631 =百位,31 =十位,205 =百位)。 – Ruchit

回答

0

假设您有两个包含您想要返回的文本的列表(如果适合您的用例,请扩展至超过千* s): big = ['Ones','Tens',数百','数千' ] 小= [“十分之一”,“百分位”,“千”]

首先,你需要获得与在QSpinBoxQLineEdit参考:

line_edit = spinBox.findChild(QLineEdit) 

然后找到其中的指数选择开始:

selectionStart = line_edit.selectionStart() 

下一页找到小数点指数:

try: 
    decimalPoint = str(line_edit.text()).index('.') 
except ValueError: 
    # no decimal point found so assume the number is an integer 
    decimalPoint = len(str(line_edit.text())) 

然后制定出你需要返回什么:

# If something is selected 
if selectionStart > -1: 
    # if we have selected text starting on the left of the decimal 
    if selectionStart < decimalPoint: 
     return big[decimalPoint-selectionStart-1] 
    # else we selected text starting on the right of the decimal 
    else: 
     return small[selectionStart-decimalPoint-1] 

我建议把这个函数中,把它适当的时候因为我没有你想要做的事情!