【发布时间】:2020-01-30 17:30:47
【问题描述】:
因此,在“设计”我的 tkinter 应用程序时,我注意到该白色条纹出现在滚动条旁边:
当滚动条进入活动状态时它并没有消失,但它绝对是滚动条本身的一部分,因为在我的程序中它下面没有任何东西有白色背景。 无论我使用网格还是包装,它似乎都会出现。在这种情况下,我使用网格 - 这里是我的代码的一小部分摘录:
class App(Tk):
def __init__(self):
#other stuff
self.hvf=hvFrame(self,sticky=EW,showfocus=S,bg='white',padx=5,pady=5)
self.hvf.grid(row=1,column=0,columnspan=2,sticky=NSEW,pady=5,padx=(0,5))
sb=Scrollbar(self,orient=VERTICAL,command=self.hvf.yview,bd=0,highlightthickness=0)
sb.grid(row=1,column=2,sticky=NSEW,pady=5)
self.hvf.config(yscrollcommand=sb.set)
如果您需要更多,那么here you go。 (对你来说不应该是可执行的,因为你没有额外的文件,但你应该仍然能够理解它。)
编辑:
一个可复制的小例子:
from tkinter import Tk,Frame,Scrollbar,VERTICAL,NS
root = Tk()
frame = Frame(root,height=300,width=500)
frame.grid(row=0,column=0,padx=(0,5),pady=5)
sb = Scrollbar(root,orient=VERTICAL)
sb.grid(row=0,column=1,sticky=NS,pady=5)
root.mainloop()
【问题讨论】:
-
" 在我的程序中没有任何东西具有白色背景。" 这与您将
self.hvf的背景显式设置为白色的代码相矛盾。如果你把那个框架的背景改成红色,这个垂直条也会变成红色吗? -
不。它甚至不能,因为 Scrollbar 既没有放在 hvFrame 上,也没有放在它的子小部件上。它就在它旁边。从 hvFrames 网格 (
padx=(0,5)) 中可以看出,它们之间甚至存在 5 个像素的间隙。 -
如果您创建了一个minimal reproducible example 会有所帮助。我们无法运行问题本身的代码,也无法运行您链接到的代码。我还建议至少尝试将白色更改为红色以验证您的假设。您声称该程序中绝对没有白色背景,但显然有些东西。也许你的一些假设是错误的。
-
在我回答你之前我真的试过了。 ;) 但我在我的问题中添加了一个小例子。 :D
-
如果我们不能运行这个例子,它在很大程度上是没有用的。有时我们可以猜测解决方案,但最好创建一个适当的可重现示例。
标签: python-3.x tkinter scrollbar