Title: Idle: scroll Text faster with mouse wheel
Type: enhancement Stage: resolved
Components: IDLE Versions: Python 3.7, Python 3.6
Status: closed Resolution: out of date
Dependencies: Superseder: IDLE: scroll text by lines, not pixels.
View: 33664
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 2018-05-28 00:52 by terry.reedy. This issue is now closed.

File name Uploaded Description Edit
MouseWheelTrace.tcl serhiy.storchaka, 2015-09-07 06:04 serhiy.storchaka, 2015-09-07 06:05
Messages (7)
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".
msg317820 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2018-05-28 00:52
This is 'out of date' in the sense that I have decided that the root problem is scrolling by pixels instead of lines.  Once we do the latter, for #33664, we can just scroll by, say, 5 lines instead of 3, which I think is sufficient.
Date User Action Args
2018-05-28 00:52:49terry.reedysetstatus: open -> closed
superseder: IDLE: scroll text by lines, not pixels.
messages: + msg317820

resolution: out of date
stage: test needed -> resolved
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