Title: Idle: scroll Text faster with mouse wheel
Type: enhancement Stage: test needed
Components: IDLE Versions: Python 3.7, Python 3.6
Status: open Resolution:
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: markroseman, serhiy.storchaka, terry.reedy
Priority: normal Keywords:

Created on 2015-09-06 19:16 by terry.reedy, last changed 2017-06-20 10:53 by serhiy.storchaka.

File name Uploaded Description Edit
MouseWheelTrace.tcl serhiy.storchaka, 2015-09-07 06:04 serhiy.storchaka, 2015-09-07 06:05
Messages (6)
msg250013 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-09-06 19:16
At least on Win7, tk.Texts scroll, by default, at an anemic 2-3 lines per wheel click, ignoring the system wheel setting. What happens on other systems?  I consider this a probable tk bug, at least on Widows, but we can override the default (on Windows) with

def mousescroll(event):
   <scroll n lines>
   return 'break'
text.bind('<MouseWheel>', mousescroll)

turtledemo.__main__ has wheel code (for font resizing) for Windows, Linux, and Mac. Unless we can access system settings, we might add a config option.
msg250026 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-09-06 22:11
On X Window the scroll step in text widget is constant (50 pixels). On Windows and Mac OS it should depend on mouse settings.

Run with, execute

    bind . <MouseWheel> {puts %D}

and try to roll mouse wheel on Tk window with different speed and settings.
msg250073 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-09-07 05:40
The SO OP reported Idle Shell and Editor behavior.  I retested minimal tk.Text(root).pack(), eliminating Idle as a factor, before and after changing system lines setting from 3 to 9, and got the constant same behavior.  The now too small 50 pixels seems about what it is doing.

Serhiy, I do not understand your 'Run ...' sentence.
msg250078 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-09-07 06:04
You can measure your mouse speed with following pure Tcl/Tk script.
msg250079 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-09-07 06:05
Or with following Python script.
msg296411 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-06-20 10:53
> Serhiy, I do not understand your 'Run ...' sentence.

Sorry, there was a typo in my sentence. I meant "Run the program 'wish' and enter the following command".
Date User Action Args
2017-06-20 10:53:27serhiy.storchakasetmessages: + msg296411
2017-06-19 20:53:36terry.reedysetassignee: terry.reedy
components: + IDLE
versions: + Python 3.7, - Python 2.7, Python 3.4, Python 3.5
2015-09-07 06:05:25serhiy.storchakasetfiles: +

messages: + msg250079
2015-09-07 06:04:48serhiy.storchakasetfiles: + MouseWheelTrace.tcl

messages: + msg250078
2015-09-07 05:40:46terry.reedysetnosy: + markroseman
messages: + msg250073
2015-09-06 22:11:32serhiy.storchakasetnosy: + serhiy.storchaka
messages: + msg250026
2015-09-06 19:16:05terry.reedycreate