2013-04-05 20 views
6

Tôi có QLineEdit và tôi muốn hạn chế QLineEdit để chỉ chấp nhận số nguyên. Nó sẽ hoạt động như inputmask. Nhưng tôi không muốn sử dụng inputmask, bởi vì nếu người dùng nhấp chuột vào số QLineEdit, con trỏ sẽ ở vị trí mà chuột được nhấp. và người dùng cần điều hướng đến vị trí 0 và nhập những gì anh ta muốn.Cách hạn chế đầu vào của người dùng trong QLineEdit trong pyqt

Có sự thay thế nào cho điều này không.

Trả lời

7

bạn có thể sử dụng xử lý ngoại lệ cho việc chứng thực này:

number = self.ui.number_lineEdit.text() 
try: 
    number = int(number) 
except Exception: 
    QtGui.QMessageBox.about(self, 'Error','Input can only be a number') 
    pass 

bạn cũng có thể sử dụng để xác nhận validators chuỗi đầu vào.

+0

tôi nghe nói về 'validators', nhưng đã không nhận thấy một ví dụ đúng về cách thiết lập nó cho 'QLineEdit'. Có nghĩa là trong khi tôi sẽ cố gắng approch của bạn. Tôi nghĩ Validator là lựa chọn tốt cho phương pháp tiếp cận chuyên nghiệp. – Rao

+0

thử tìm hiểu từ câu hỏi này tại đây http://stackoverflow.com/questions/5770441/checking-qvalidators-state – scottydelta

+2

Một ví dụ tốt về cách sử dụng trình xác thực là ở đây: http://snorf.net/blog/2014/08/ 09/using-qvalidator-in-pyqt4-to-validate-user-input/ – maurobio

3

bạn có thể sử dụng QValidator nó hoạt động như:

#To allow only int 
self.onlyInt = QIntValidator() 
self.LineEdit.setValidator(self.onlyInt) 
Các vấn đề liên quan