2016-08-21 2 views
0

Я работаю над новой программой на Python 3 с tkinter. Я пытаюсь добавить панель прокрутки ко всему окну, но она не работает. Прямо сейчас я просто пытаюсь сделать окно размером 1000 пикселей (будет установлено позже в программе) и использовать вертикальную полосу прокрутки для доступа к частям, которые не видны на экране. Я прочитал несколько других потоков, пытаясь понять это и попытался. Может ли кто-нибудь сказать, как заставить его работать и что я сделал не так. Не отображается ошибка, но также не отображается полоса прокрутки. Вот код:Python Tkinter Scrollbar не работает

from tkinter import * 
class MusicPlayer: 
    def __init__(self): 
     self.tk = Tk() 
     self.tk.title("Bass Blaster") 
     self.screen_width, self.screen_height = self.tk.winfo_screenwidth(), self.tk.winfo_screenheight() 
     self.frame = Frame(self.tk, width=self.screen_width, height=self.screen_height) 
     self.frame.grid(row=0, column=0) 
     self.canvas = Canvas(self.frame, bg="#585858", width=self.screen_width, height=self.screen_height, scrollregion=(0, 0, self.screen_width, 1000)) 
     vbar = Scrollbar(self.frame, orient=VERTICAL) 
     vbar.pack(side=RIGHT, fill=Y) 
     vbar.config(command=self.canvas.yview) 
     self.canvas.config(width=self.screen_width, height=self.screen_height) 
     self.canvas.config(yscrollcommand=vbar.set) 
     self.canvas.pack(side=LEFT, expand=True, fill=BOTH) 
     self.tk.update() 

bass_blaster = MusicPlayer() 
bass_blaster.tk.mainloop() 
+0

Я не знаю, как Tkinter работает под капотом, но ваша переменная 'vbar' является локалью к методу' __init__', а затем, когда вы ее оставляете, 'vbar' уничтожается, если у вас нет ссылки на него. Tkinter может не сохранять вашу ссылку в качестве дочернего элемента, и ваша полоса прокрутки уничтожается, когда вы покидаете метод '__init__'. Постарайтесь сделать его членом класса. (вы также должны сделать свой класс 'MusicPlayer' наследованием от' Tk') –

+0

@ romain-aga Я изменил vbar на self.vbar, думая, что это так, но это не имело значения. Попробует наследовать Tk – Garrett

+0

Похоже, высота холста больше 1000. Попробуйте установить высоту холста менее 1000. – acw1668

ответ

0

полоса прокрутки была там все время, проблема заключалась в том, что я сделал холст ширина размеру экрана в и полоса прокрутки добавлял на ширину, поэтому происходит от экрана. Мне просто нужно было сделать ширину немного меньше.

Смежные вопросы