Как использовать полосу прокрутки со списком в геометрии сетки с Tkinter? - PullRequest
0 голосов
/ 11 апреля 2020

В следующем коде я просто пробовал всевозможные виджеты в форме. Как заставить полосу прокрутки отображаться в списке? Все примеры, которые я видел, показывают геометрию пакета только со списком и полосой прокрутки.

import tkinter as tk

def Addn(): #command function for button 
    a = int(Entrya.get())
    b = int(Entryb.get())
    c = a+b
    Entrys.configure(state='normal')
    sumv.set("")
    Entrys.insert(2,c) 
    Entrys.configure(state='readonly')    
form = tk.Tk()
form.title("Comprehensive Standard Form")
form.geometry('750x500')
sumv=tk.StringVar()
btnAddn = tk.Button(form, text="Add",command=Addn)
Labela = tk.Label(form, text="A:")
Labelb = tk.Label(form, text="B:")
Labels = tk.Label(form, text="Sum:")
Entrya = tk.Entry(form)
Entryb = tk.Entry(form)
Entrys = tk.Entry(form,width=30,textvariable=sumv)
Entrys.configure(state='readonly')
#scrollbar
scrollbar=tk.Scrollbar(form)
mylist = tk.Listbox(form, yscrollcommand = scrollbar.set )
for line in range(100):
   mylist.insert("end", "This is line number " + str(line))
mylist.grid(row=7,column=1,rowspan=3)
scrollbar.config( command = mylist.yview )
#Placement in form
Labela.grid(row=0, column=0, padx=25, pady=25)
Entrya.grid(row=0, column=1, padx=25, pady=25)
Labelb.grid(row=1, column=0, padx=25, pady=25)
Entryb.grid(row=1, column=1, padx=25, pady=25)
Labels.grid(row=2, column=0, padx=25, pady=25)
Entrys.grid(row=2, column=1, padx=25, pady=25)
form.mainloop()

1 Ответ

0 голосов
/ 11 апреля 2020

Вам просто нужно добавить полосу прокрутки в форму, используя .grid, так же, как вы использовали .grid в списке.
Использование параметра sticky в .grid может помочь вам выровнять ваш список с Ваша полоса прокрутки.

mylist.grid(row=7,column=1,rowspan=3, sticky='e')
scrollbar.grid(row=7, column=2, rowspan=3, sticky='nsw')

sticky принимает аргументы Север, Юг, Восток и Запад, сокращенно как строка, содержащая их первые буквы. sticky говорит виджету «прилипать» к указанным краям ячейки, в которой он размещен. Если для него установлены липкие точки с противоположных сторон ячейки, он будет растягиваться (север и юг или восток и запад), иначе будет расположен на выбранной стороне. Полоса прокрутки имеет липкие настройки на север и юг, чтобы убедиться, что она занимает всю высоту своей ячейки. У него также есть липкая установка на запад, так что он расположен на левой стороне ячейки. mylist имеет липкий набор на восток, поэтому он расположен справа. С mylist справа и полосой прокрутки слева, два виджета смежны и выглядят как один связный виджет.

...