Wenn man QLineEdit Felder baut, möchte man manchmal den User zwingen nur ganz bestimmte Eingaben zu machen.
self.input6 = QLineEdit(str(restic_keep_monthly), self)
In diesem Feld kann man einstellen, wie viele Monate Restic beim Prunen aufheben soll. Damit behält Restic von jedem Monat einen Snapshot, der Rest wird gelöscht. Jetzt möchte ich das gerne auf die letzten 12 Monate begrenzen.
Jetzt der Teil, der dafür zuständig ist, das zu überwachen.
from PyQt6.QtGui import QIcon, QRegularExpressionValidator
from PyQt6 import QtCore
rx = QtCore.QRegularExpression('^([1-9]|[1-1][0-2])$')
v = QRegularExpressionValidator(rx, self.input7)
self.input7.setValidator(v)
Das habe ich so zusammengebaut anhand des folgenden Beitrages.
If you want to restrict valid input to integer values between 1 and 100, this will do it:
^([1-9]|[1-9][0-9]|100)$
Explanation:
^ = start of input
() = multiple options to match
First argument [1-9] - matches any entries between 1 and 9
| = OR argument separator
Second Argument [1-9][0-9] - matches entries between 10 and 99
Last Argument 100 - Self explanatory - matches entries of 100
This WILL NOT ACCEPT: 1. Zero - 0 2. Any integer preceded with a zero - 01, 021, 001 3. Any integer greater than 100
Quelle: https://stackoverflow.com/questions/2616974/limit-length-of-characters-in-a-regular-expression
Mein Ausdruck
([1-9]|[1-1][0-2])
- [1-9] erlaubt 1 - 9
- |[1-1][0-2] erlaubt 10,11 und 12
Ja, ich weiß ich muss dringend an den Namen der Variablen usw. arbeiten, so rx und v ist in Python nicht gerne gesehen.