【问题标题】:How can I set the row height in Tkinter TreeView?如何在 Tkinter TreeView 中设置行高?
【发布时间】:2018-07-04 02:09:48
【问题描述】:

我最近写了一个小应用,需要跨平台。我使用 Python 和 Tkinter 作为 GUI。

效果很好,但最近我买了一台带有 hiDPI 屏幕的新笔记本电脑,它似乎弄乱了 TreeView(见下图)。与行高相比,文本高度太大。

图片取自作为访客运行 Windows 7 的虚拟机。我必须将文本设置为更大的尺寸 (125%) 才能在屏幕上阅读(我尝试过的所有其他程序都可以在此设置下正常工作)。

有没有办法在 Tkinter TreeView 中设置行的高度?我在文档中没有看到类似的内容。

【问题讨论】:

标签: python tkinter treeview hidpi


【解决方案1】:
s = ttk.Style()
s.configure('Treeview', rowheight=40) # repace 40 with whatever you need

【讨论】:

  • 我喜欢简单的答案,但如果你不能也请添加工作示例?
  • 非常感谢,很抱歉没有包含 MCVE,我认为图片会说明一切。
  • @JacquesGaudin 编码单个字符错误可能是工作与否的区别,因此我们希望能够在发布解决方案之前对其进行测试。通过不包括 MCVE,您将负担我们编写一些样板代码来进行测试。在这种情况下,我已经有了答案,因为这不是我第一次被问到这个问题。如果我没有现成的答案,我就不会费心研究您的问题而没有测试解决方案的方法。
  • @Novel 我有一个包含 3 个不同树视图的项目,我尝试使用:s= ttk.Style() s.configure('Treeview', rowheight=40) 但随后它更改了所有树视图的行高,而不是我想要的树视图.我尝试更改root,但没有成功,您能帮我解决这个问题吗?
  • @AleksandarBeat 阅读风格。我修改了全局样式。要执行您想要的操作,您需要使用新名称(例如 s.configure('Aleksandar.Treeview', rowheight=40))创建样式,然后您可以通过传递样式参数(例如 t = ttk.Treeview(self, style='Aleksandar.Treeview'))来使用它。
【解决方案2】:

我已经为字体大小设置了变量,并希望避免为行高设置变量。所以我的代码如下所示:

style = ttk.Style()
style.configure("Treeview.Heading", font=(None, LARGE_FONT), \
                rowheight=int(LARGE_FONT*2.5))
style.configure("Treeview", font=(None, MON_FONTSIZE), \
                rowheight=int(MON_FONTSIZE*2.5))

LARGE_FONT 设置为14 时,行高设置为35。当MON_FONTSIZE设置为12时,行高计算为30

最终结果具有系统字体的正确间距 (IMO)。其他字体系列的 YMMV:

【讨论】:

  • 遇到过类似的问题,我认为这其实是更好的解决方案。
猜你喜欢
  • 2021-07-18
  • 2017-01-29
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
相关资源
最近更新 更多