Прокручиваемый холст вне экрана в ткинтере - PullRequest
0 голосов
/ 16 ноября 2018

Обновление: Я закончил тем, что переключился на использование Treeview для этого, поскольку он поддерживает полосу прокрутки, и он намного чище отображает мою таблицу.

У меня есть приложение, которое вводит метки из файла для построениястол'.Я хотел добавить полосу прокрутки, но мне было трудно это сделать.Я немного работал, но он не был правильно ориентирован, и вы могли видеть только половину таблицы.Я добавил .grid, чтобы растянуть рамку, но теперь, когда я рисую таблицу, она выходит за пределы экрана, а полоса прокрутки просто рисуется сбоку виджета - она ​​никуда не прокручивается.

Вотчасть класса, которая рисует таблицу:

def tabledraw(self):
        self.table_values = Canvas(window1, borderwidth=5)
        #self.table_values.configure(scrollregion=[0,0,970,600])
        self.frame = Frame(self.table_values)
        self.vsb = Scrollbar(window1, orient="vertical", command=self.table_values.yview)
        self.table_values.configure(yscrollcommand=self.vsb.set)

        self.vsb.grid(row=3, column=2, sticky=N+S+E)
        self.table_values.grid(row=3, columnspan=3, padx=20, pady=20)

        self.table_values.create_window((4,4), window=self.frame, anchor="nw", tags="self.frame")
        self.frame.grid(columnspan=3, sticky=E+W)
        self.frame.bind("<Configure>", self.onFrameConfigure)

        with open('table_co.pkl', 'rb') as infile:
            table = pickle.load(infile)

        for i in range(self.height): 
            for j in range(self.width):
                self.b = Entry(self.frame, text="", width=30)
                self.b.grid(row=i, column=j)
                self.b.insert(0, str(table[i][j]))

    def onFrameConfigure(self, event):
        #self.table_values.config(scrollregion=[0,0,970,200])
        self.table_values.configure(scrollregion=self.table_values.bbox("all"))

Я попытался присвоить статическое значение области прокрутки холста, но, похоже, она не изменилась.

Я новичок вpython, так что если я делаю что-то не так, дайте мне знать.

...