Ipywidget.Textbox кажется деформированным внутри сетки. Изменить: кнопки работают - PullRequest
0 голосов
/ 26 мая 2020

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

Проблема в том, что когда я запускаю программу в блокноте jupyter, последний столбец кажется непропорциональным по сравнению с другими, и я не вижу, какая инструкция приводит к этому.

Редактировать: Я продвинулся в программе, и она дает именно то, что я хочу, когда я использую кнопки (см. Рисунок). Проблема в том, что я хочу использовать текстовые поля или раскрывающийся список, но простая замена инструкции, которая создает кнопку, дает искаженный результат (см. Другой рисунок).

См. Код ниже.

from ipywidgets import Button, GridBox, Layout, ButtonStyle,widgets

Dicparams = {'Apples':5,'Oranges':2,'Bananas':3}

maxdim = max(Dicparams.values())

Stxt= ''
for i in range(0,maxdim+1):
    Stxt = Stxt + ' ' + Scol_length

boxlist=[];Sid = ''

for Skey in Dicparams:

    lab = widgets.Label(Skey)
    boxlist.append (lab)    
    Sid = Sid + ' \n ' + '"' + Skey + 'label'

    nboxes =int(Dicparams[Skey])
    compteur = 0;Vmat = []

    for i in range(0,10): 

        if i==0:

            for j in range(0,nboxes):
                Vmat.append(0)

        for j in range(0,nboxes):

            compteur = compteur+1
            Vmat[j] = Vmat[j]+1
            if compteur==maxdim: break

        if compteur==maxdim: break

    print(Vmat)

    compteur=0

    for j in range(0,nboxes):

        k = Vmat[j]
        compteur=compteur+1

        for i in range(0,k):

            textbox  = Button(description='',layout=Layout(width='auto', grid_area=Skey + str(compteur)),style=ButtonStyle(button_color='blue'))
            #textbox=widgets.Combobox(options=['1', '2', '3'],value='1',description='',disabled=False,grid_area=Skey + str(compteur))

            if i==0: boxlist.append(textbox)

            Sid = Sid + ' ' + Skey + str(compteur)

        j=j+k

    Sid = Sid + '"'

print(Sid)

GridBox(children=boxlist,layout=Layout(width='50%',grid_template_rows='auto auto auto',grid_template_columns=Stxt,grid_template_areas=Sid))

ОК с инструкциями кнопок

Не нормально с текстовыми полями

enter image description here

...