Я играю с виджетами Tkinter и пытаюсь применить полосу прокрутки к виджету холста, но когда программа запускается, она зависает - нет сообщения об ошибке и т. Д.Проблемы с применением полосы прокрутки к виджету холста в Tkinter
Во-первых, это общая логика, чтобы прикрепить полосу прокрутки в порядке?
Во-вторых, проблема связана с методом .pack()
, так как удаление этого позволяет запустить программу. Как я использовал метод .grid()
else, где это означает, что я должен использовать метод .grid()
для прокрутки? Если да, то как это можно достичь? Любая помощь для получения этой работы будет чрезвычайно оценена. Заранее благодарю за ваше время.
from tkinter import *
x = 10
y = 10
a = 100
b = 100
def change_coord(event):
global coord
if event.keysym == 'Up':
coord[1] -=1
coord[3] -=3
if event.keysym == 'Down':
coord[1] +=1
coord[3] +=3
if event.keysym == 'Right':
coord[0] +=1
coord[2] +=3
if event.keysym == 'Left':
coord[0] -=1
coord[2] -=3
canvas1.coords(arc, *coord)
window = Tk()
window.geometry("500x500")
#canvas scroll bar
scrollbar = Scrollbar(window)
scrollbar.pack(side=RIGHT, fill=Y)
#canvas and drawing
canvas1=Canvas(window, yscrollcommand=scrollbar.set, height = 200, width = 400)
canvas1.grid(row=0, column=0, sticky=W)
coord = [x, y, a, b]
arc = canvas1.create_rectangle(*coord, outline="#fb0", fill="#fb0")
#canvas scrollbar continued
scrollbar.config(command=canvas1.yview)
#captureing keyboard inputs and assigning to function
window.bind_all('<Up>', change_coord)
window.bind_all('<Down>', change_coord)
window.bind_all('<Left>', change_coord)
window.bind_all('<Right>', change_coord)
window.mainloop()
Кроме того, я вижу, что, когда я использую метод .pack()
поместить холст в окне работает программа, полоса прокрутки видима, но полоса прокрутки не на самом деле работает. Любая помощь с этой проблемой будет очень приветствоваться. Спасибо.
Почему _are_ вы используете 'grid' вместо' pack' для 'canvas1'? – abarnert
Этот код взят из более крупного раздела кода, где все добавленные виджеты были организованы с использованием метода сетки. – sw123456
Из http://effbot.org/tkinterbook/grid.htm: Предупреждение: никогда не смешивайте сетку и пакет в том же главном окне. Кстати, для меня это работает несколько (с 'пакетом' для холста). У меня есть полоса прокрутки и вы можете переместить окно, щелкнув вверх/вниз. Однако бар сам заполняет все вертикальное пространство. – Jasper