【问题标题】:Weird white Stripe appearing next to tkinter scrollbartkinter 滚动条旁边出现奇怪的白色条纹
【发布时间】: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


【解决方案1】:

在测试了一些事情之后,比如改变 windows 主题或者改变根和框架背景为黑色,while 行仍然出现。我不能 100% 确定,但我相信这是因为 Windows 上的 tkinter 从 Windows 本身提取了滚动条设计,它只是该设计的一部分。给滚动条一些视觉深度可能是一种设计选择。也就是说,您无法在 Windows 环境中更改滚动条的设计,因此除非您编写自定义滚动条,否则您将被卡住。

示例代码:

import tkinter as tk

root = tk.Tk()
root['bg'] = 'black'
frame = tk.Frame(root, height=300, width=500, background='black')
frame.grid(row=0, column=0)
sb = tk.Scrollbar(root, orient=tk.VERTICAL)
sb.grid(row=0, column=1, sticky=tk.NS)
root.mainloop()

白色和黑色背景叠加的结果:

下面是我用于自定义滚动条的代码(但不是我自己写的)。你可以找到我收到code here的帖子。

【讨论】:

  • 谢谢!我担心它会像那样,但希望它只是一个可以修复的错误。但我想我会去写我自己的滚动条(我可以使用你发布的例子,但自己做这些东西总是一个很好的练习。^^)。
  • @Nummer_42O 很高兴为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 2012-07-08
相关资源
最近更新 更多