This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: IDLE: path browser unusable on some displays
Type: behavior Stage: resolved
Components: IDLE Versions: Python 3.8, Python 3.7
process
Status: closed Resolution: duplicate
Dependencies: Superseder: IDLE: Convert browsers to use ttk.Treeview
View: 31552
Assigned To: terry.reedy Nosy List: aroberge, terry.reedy
Priority: normal Keywords:

Created on 2019-05-25 10:26 by aroberge, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
path_browser_problem.png aroberge, 2019-05-25 10:26 screen capture showing the problem
Messages (3)
msg343466 - (view) Author: Andre Roberge (aroberge) * Date: 2019-05-25 10:26
On my computer (Windows 10, screen resolution 3000 x 2000, scaling of text and other elements set at 200% as the recommended value), the path browser is essentially unusable as the items overlap each other. See the attached image. 

I found that changing the following:

    def draw(self, x, y):
        # XXX This hard-codes too many geometry constants!
        dy = 40  # changed from 20

in tree.py solved the problem.
msg343532 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2019-05-26 04:37
Another reason to replace IDLE's custom tree widget with hard-coded constants with ttk.Treeview.

I am closing this because I believe that #31552 will solve this problem.  For an initial check, run the following test code, extracted from
https://tkdocs.com/tutorial/tree.html
Click the [+] buttons.  I am curious whether commenting out the fix_scaling call makes any difference.

---------
import tkinter as tk
from tkinter import ttk
from idlelib.run import fix_scaling

root = tk.Tk()
tree = ttk.Treeview(root)
tree.pack()
fix_scaling(root)

tree.insert('', 'end', 'widgets', text='Widget Tour')
tree.insert('', 0, 'gallery', text='Applications')
id = tree.insert('', 'end', text='Tutorial')
tree.insert('widgets', 'end', text='Canvas')
tree.insert(id, 'end', text='Tree')

root.mainloop()
msg343543 - (view) Author: Andre Roberge (aroberge) * Date: 2019-05-26 10:22
I ran the example you gave and it worked perfectly.
History
Date User Action Args
2022-04-11 14:59:15adminsetgithub: 81222
2021-06-03 16:23:21arobergesetstatus: open -> closed
2019-05-26 10:22:40arobergesetmessages: + msg343543
2019-05-26 04:37:25terry.reedysetassignee: terry.reedy
superseder: IDLE: Convert browsers to use ttk.Treeview
components: + IDLE
versions: + Python 3.7, Python 3.8
messages: + msg343532
type: behavior
resolution: duplicate
stage: resolved
2019-05-25 10:26:20arobergecreate