Полоса прокрутки в Python Tkinter Toplevel () появляется, но не прокручивает - PullRequest
0 голосов
/ 08 мая 2018

Я просмотрел все ответы на вопросы, доступные здесь, но безрезультатно. Я работаю в Mac OS X High Sierra, и мой виджет полосы прокрутки появляется, но не прокручивает окно, какой-либо совет?

from tkinter import *

root = Tk()
root.geometry('400x500')
root.resizable(False, False) 


def window():

    popup = Toplevel()

    vertScrollbar = Scrollbar(popup, orient='vertical')
    vertScrollbar.pack(side='right', fill='y')

    scrollCanvas = Canvas(popup, width='400', height='500', yscrollcommand=vertScrollbar.set)

    vertScrollbar.config(command=scrollCanvas.yview)

    scrollFrame = Frame(scrollCanvas, width='400', height='500') 
    scrollCanvas.create_window(0, 0, window=scrollFrame, anchor='n')

    for words in range(150):
        test = Label(scrollCanvas)
        test.config(text='this is a test')
        test.pack()

    scrollCanvas.config(scrollregion=scrollCanvas.bbox('all'))
#scrollCanvas.config(scrollregion=(0,0,400,800)) doesn't work either
    scrollCanvas.pack(side='top', fill='both')
    scrollFrame.pack(side='top', fill='both')

openWindow = Button(root, text='Push Me', command=window)
openWindow.pack(ipadx='5', ipady='3', pady='10')

root.mainloop()

1 Ответ

0 голосов
/ 08 мая 2018

Внутри scrollFrame ничего нет.

Этикетки упакованы в popup, а не в scrollCanvas

Кажется, что scrollCanvas.config(scrollregion=scrollCanvas.bbox('all')) не справляется с работой, не ясно, почему.

Вот пример, который работает для Python 3.6.5 в Windows 10:

from tkinter import *

root = Tk()
root.geometry('200x200')
root.resizable(False, False) 

vertScrollbar = Scrollbar(root, orient='vertical')
vertScrollbar.pack(side='right', fill='y')

scrollCanvas = Canvas(root, width='400', height='500',
                      scrollregion=(0, 0, 400, 500),
                      yscrollcommand=vertScrollbar.set)

vertScrollbar.config(command=scrollCanvas.yview)

scrollCanvas.pack(side='top', fill='both')

img = PhotoImage(file='test.gif')
scrollCanvas.create_image(2, 2, anchor='nw', image = img)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...