簡體   English   中英

帶有 QValidator 的 PyQt QLineEdit

[英]PyQt QLineEdit with QValidator

我的項目中有一個 QLineEdit。 我想在 lineEdit 上使用 QValidation。

#Create lineEdit
itemValue = QtWidgets.QLineEdit()
#Create валидатор
objValidator = QtGui.QDoubleValidator(self)
#setup range
objValidator.setRange(-10.0, 100.0, 5)
#lineEdit with validation
itemValue.setValidator(objValidator)

但它不能很好地工作。我可以輸入我想要的東西,除了符號。 並且范圍不起作用!我可以輸入 100500 或 -100500,但我想要,該用戶只能輸入范圍內的數字。

我應該如何使用范圍? 我需要幫助:)

感謝您的幫助,伙計們!

默認情況下,驗證器不會阻止輸入范圍之外的值,並且如果輸入的值是Invalid 或 Intermediate ,它也不會阻止用戶離開行編輯。

但是,它確實讓您有機會以編程方式拒絕輸入,因為只要當前值不可接受,行編輯就不會發出它的editFinishedreturnPressed信號,並且它的hasAcceptableInput方法將返回False 此外,如果您對驗證器進行子類化,則可以重新實現其修復方法來控制輸入的值。

然而,正如已經提出的那樣,一個更好/更簡單的解決方案是使用QDoubleSpinBox ,因為它會自動清理輸入並提供更用戶友好的界面。

作為替代方案,您可以使用QDoubleSpinBox

  • 已內置驗證器
  • 輸入時防止無效輸入
  • 有內置的 setRange()
  • 並添加了一個小句柄來更改更多面向鼠標的用戶的值。

可能您正在期待不應該發生的事情。
一般來說,當你有驗證器時,你應該能夠在中間狀態輸入一些不完全符合限制的東西。 但這應該是固定的,當編輯器失去焦點時。

為什么? 想象一下,您有84並且您希望將其更正為-8.4 很多人會這樣做:加減號,所以現在你有-84 ,這是不可接受的,然后加點。 如果驗證器立即修復此問題,那么用戶會很煩。

那么當編輯器失去焦點時,這個“問題”是否會發生?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM