Странная белая полоса появляется рядом с полосой прокрутки tkinter - PullRequest
0 голосов
/ 30 января 2020

Поэтому, «проектируя» мое приложение 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)

Если вам нужно больше, то здесь вы 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()

1 Ответ

1 голос
/ 30 января 2020

После тестирования нескольких вещей, таких как изменение темы windows или изменение root и фона рамки на черный, пока линия все еще появляется. Я не могу быть уверен на 100%, но я верю, что это связано с тем, что tkinter на Windows извлекает дизайн полосы прокрутки из самого 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()

Результаты наложения белого и черного фона:

enter image description here

Ниже приведен код, который я использую для пользовательской полосы прокрутки (но сам не писал). Вы можете найти пост, где я получил код здесь .

...