首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ActiveTcl 8.5.18实现mac上的Tkinter滚动条错误

用ActiveTcl 8.5.18实现mac上的Tkinter滚动条错误
EN

Stack Overflow用户
提问于 2016-01-15 05:44:12
回答 1查看 601关注 0票数 0

在tkinter中,鼠标指针和tkinter.Scrollbar之间的交互存在一个奇怪的GUI错误。滚动条的滑块不在图形显示的位置,并且它的移动速度与鼠标指针滑动的速度不一样。它使它很难使用。下面是从http://effbot.org/tkinterbook/scrollbar.htm借来的示例代码

代码语言:javascript
复制
#!/usr/bin/env python3 # python 3.4.3 using ActiveTcl 8.5.18
#!/usr/bin/env python # python 2.7.10 using ActiveTcl 8.5.18
#!/usr/bin/python # os-x-native python 2.7.5 using os-x-native Tcl 8.5.9 [WORKS]

# Example from http://effbot.org/tkinterbook/scrollbar.htm
try:
    # Python2
    import Tkinter as tk

except ImportError:
    # Python3
    import tkinter as tk
    import tkinter.ttk as ttk

import sys

master = tk.Tk()

# print version info:
sys.stdout.write("Python: %s.%s.%s\nTcl: %s\n" % (sys.version_info[0], sys.version_info[1], sys.version_info[2], tk.Tcl().eval("info patchlevel")))

# scrollbar = ttk.Scrollbar(master)
scrollbar = tk.Scrollbar(master)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

listbox = tk.Listbox(master, yscrollcommand=scrollbar.set)
for i in range(1000):
    listbox.insert(tk.END, str(i))
listbox.pack(side=tk.LEFT, fill=tk.BOTH)

scrollbar.config(command=listbox.yview)

tk.mainloop()

试着点击并拖动滑块:它不工作。如果您单击并拖动到滑块下方,那么它就能工作了。它看起来像鼠标反应滑块不对应于视觉滑块。此外,滑块在拖动时的移动速度与鼠标速度不一致.

这只发生在使用ActiveTcl 8.5.18的mac上(MacforPythonPython2.7.10(包括Python3)的推荐版本)。当使用osx-本机python 2.7.5和osx-本机Tcl 8.5.9 (os x 10.9.5)时,一切正常工作。

这个问题在python 3.4.3和TCL8.6.1的linux中是不存在的,在windows上不确定。

有人知道解决办法吗?使用主题小部件版本的滚动条并不能解决问题。

EN

回答 1

Stack Overflow用户

发布于 2017-04-11 19:45:35

这不是tkinter中的一个bug,而是Tk的Mac实现中的一个bug,从8.5.18和8.6.4版本开始。在这两个版本中,本机滚动条被删除,因为Cocoa滚动管理存在各种与Tk有关的隐藏问题。现在使用HItheme绘制滚动条,但是这引入了描述的视觉滑块与类似滑块的区域之间的偏移量。目前还没有解决这个问题的方法。有关更多细节,请参见此处:

https://sourceforge.net/p/tcl/mailman/tcl-mac/?viewmonth=201703

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34805032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档