Полоса прокрутки не движется, но не ее содержимое - PullRequest
0 голосов
/ 10 июля 2020

Описание проблемы:

Я совершенно не знаком с разработкой GUI на Tkinter. Переходя к проблеме, у меня есть главное окно, и оно разделено на два разных фрейма: верхний и нижний. Я хочу переместить только верхнюю рамку, когда перемещаю горизонтальную полосу прокрутки. полоса прокрутки движется, но содержимое не перемещается вместе с ней.

Что я пробовал: следующая процедура: главное окно -> верхний фрейм (в основном окно) -> холст (на верхнем фрейме) -> прокручиваемый фрейм (на холсте) -> 10 различных фреймов

полоса прокрутки соединена с верхним фреймом (установлен на холст xview).

хотя полоса прокрутки установлена, я снова добавил следующий код (код указан в конце)

размеры:

верхняя рамка - ширина = 5000, высота = 550, холст -w = 50000, h = 5500, (область прокрутки - (0,0,50000,5500)), прокручиваемый кадр - не определен, 10 кадров различий - w = 500, h = 400 (размер одного кадра),

размер нижней рамки - w = 400, высота = 400

кто-нибудь помогите пожалуйста. Уже 1 неделю ломаю себе голову.

Код:

from tkinter import * 
from tkinter.ttk import *

top1 = tk.Tk()  
top1.title("Output window")
  
fram1 =tk.Frame(top1,width=5000,height=550,bg = 'khaki1',relief=SUNKEN) 
canvas = Canvas (fram1,width=50000,height=5500,bg = 'sky blue',scrollregion(0,0,50000,5500))

fram2 =ttk.Frame(top1,width=400,height=400,relief=SUNKEN) 
 
scroll_bar_v = tk.Scrollbar(top1,orient='vertical') 
scroll_bar_v.pack( side = RIGHT, fill = Y ) 

scroll_bar_h = Scrollbar(fram1,orient='horizontal') 
scroll_bar_h.config(command = canvas.xview)
scroll_bar_h.pack( side = BOTTOM, fill = X )

left1= ttk.Frame(fram2, borderwidth=2, height = 400,width = 500,relief="sunken")
left2= ttk.Frame(fram2, borderwidth=2, height = 400,width = 500,relief="sunken")
left3= ttk.Frame(fram2, borderwidth=2, height = 400,width = 500,relief="sunken")


left1.pack(side = 'left',padx=10, pady=10)
left2.pack(side = 'left',padx=10, pady=10)
left3.pack(side = 'left',padx=10, pady=10)


scrollable_frame = tk.Frame(canvas, bg = 'khaki1')
scrollable_frame.pack(side = 'top',padx = 10,pady = 10)


for i in range(10):

    left = tk.Frame(scrollable_frame, borderwidth=2, height = 400,width = 500,relief="sunken") # fram1 to canvas
    left. pack(side = 'left',padx=10, pady=10)
    l1 = tk.Label (left,text = i,font = ('Arial',20,'bold')).place(x = 50, y =30)

canvas.configure(xscrollcommand= scroll_bar_h.set,scrollregion=canvas.bbox("all")) 
canvas.pack(fill = 'both')     
 

fram1.pack(side = 'top')
fram2.pack(side = 'bottom')

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