прокручиваемый список в сетке с использованием tkinter

Я новичок в этом месте и tkinter. Я застрял в создании прокручиваемого списка или холста. Я пробовал оба виджета. В этом списке или холсте у меня есть несколько виджетов ввода и метки. Исходная точка R0,C0. Я использовал row/columnconfigure, чтобы растянуть список или холст.

В главном окне у меня было 4 кнопки от четвертой строки до четвертой колонки (0,4->4,4). Я поместил полосу прокрутки в столбец 5. Я попытался использовать метод сетки. Проблема, с которой я сталкиваюсь, заключается в том, чтобы сделать полосу прокрутки функциональной.

Примечание. Превращение мейнфрейма в класс — это только один из способов, которые я пробовал. Упаковка полосы прокрутки справа сработала, а список/холст упакован слева. Однако виджет списка/холста, которому назначена полоса прокрутки, не прокручивает список/холст. Кроме того, добавление большого количества полей ввода не приводит к прокрутке списка/холста. Помогите, пожалуйста.

from tkinter import *
from tkinter.ttk import *

Style().configure("B.TFrame", relief="flat",
background="blue")
Style().configure("R.TFrame", relief="flat",
background="red")
Style().configure("R.TLabel", background="red")

class Application(Frame): 
    def __init__(self, master=None):
        Frame.__init__(self, master, style="B.TFrame") 
        self.grid(sticky=N+S+E+W) 
        self.mainframe()

    def mainframe(self):
        top=self.winfo_toplevel()
        self.menuBar = Menu(top)
        top["menu"] = self.menuBar
        self.subMenu = Menu(self.menuBar, tearoff=0)
        self.subMenu2 = Menu(self.menuBar, tearoff=0)
        self.menuBar.add_cascade(label="File", menu=self.subMenu)
        self.menuBar.add_cascade(label="About", menu=self.subMenu2)
        self.subMenu.add_command(label="Open")
        self.subMenu.add_command(label="Save")
        self.subMenu.add_command(label="Exit")
        self.subMenu2.add_command(label="About")
        self.subMenu2.add_command(label="Help")



        self.data = Listbox (self, bg='red')
        scrollbar = Scrollbar(self.data, orient=VERTICAL)

        self.add = Button(self, text="")
        self.remove = Button(self, text="")
        self.run = Button(self, text="")
        self.stop = Button(self, text="")

        self.data.grid (row=0, column=0, rowspan=4, columnspan=4, sticky=N+E+S+W)
        self.data.columnconfigure(1, weight=1)
        self.data.columnconfigure(3, weight=1)

        self.add.grid(row=4,column=0,sticky=EW)       
        self.remove.grid(row=4,column=1,sticky=EW)
        self.run.grid(row=4,column=2,sticky=EW)
        self.stop.grid(row=4,column=3,sticky=EW)
        scrollbar.grid(column=5, sticky=N+S)
8
задан Bryan Oakley 3 June 2012 в 14:41
поделиться