Quick answer: Pygame custom text input's cursor blinking faster on low-end hardware? Blink driven by frame counter; faster fps = faster blink - use real-time tick.
Cursor blinks 4x per second on dev machine; 16x per second on a 240Hz monitor.
Time-based blink
now = pygame.time.get_ticks()
show = (now // 500) % 2 == 0500ms half-period; consistent across framerates.
Or framerate-cap
Cap to 60fps for UI updates; blink follows frame at known rate.
Profile per-fps
Test at 30, 60, 144 fps. Blink rate should be consistent.
“Frame-based timing varies. Real-time is consistent.”
For UI elements that need consistent timing, real-time is the default. Frame counters are for animation, not behavior.