Pitkien nettihakujen jälkeen jotain toiminnallisuutta on koossa
import tkinter
from tkinter import *
root = Tk()
dr = 0 ## display_row
L1 = Label(root, text="Syöttöavustin")
L1.grid(row = dr,column=0)
dr = dr + 1 ## asiaotsikko tehty
L1 = Label(root, text="================")
L1.grid(row=dr,column=0)
dr = dr + 1
L1 = Label(root, text="Syöttörivi")
L1.grid(row=dr,column=0)
dr = dr + 1
height = 5 ## scroll_area
width = 5
data_fields = ['nimi', 'pvm', 'summa','laji', 'erä']
for i in range(height):
lab = Label(root, text=data_fields[i])
lab.grid(row = dr,column=i)
##print(data_fields[i])
dr = dr + 1 ## kenttäotsikot tehty
input_cells = {} ## tässä syötearvot
for j in range(width):
ms = StringVar()
ms.set(str(j) )
Entry(textvariable=ms).grid(row = dr,column=j, padx=10,pady=10)
input_cells[(j)] = ms
dr = dr + 1 ## kenttäotsikot tehty
L1 = Label(root, text="Tallennetut tiedot")
L1.grid(row=dr,column=0)
def save_row():
print('tallenna painettu')
for j in range(width):
data_cells[(0,j)].set(input_cells[(j)].get() )
sub_btn=Button(root,text = 'Tallenna', command = save_row)
sub_btn.grid(row=dr,column=4)
dr = dr + 1
data_cells = {} ## tänne taulukoidut arvot
for i in range(height):
##entry = Entry(textvariable=mystr,
## state=DISABLED).grid(row=1, column=i, padx=10, pady=10)
for j in range(width):
ms = StringVar()
ms.set(str(i * width + j) )
Entry(textvariable=ms).grid(row = dr+i,column=j, padx=10,pady=10)
data_cells[(i,j)] = ms
##dr = dr + 1
mainloop()
Kun uusia rivejä lisätään data_cells hakemistoon (onko oikea termi), jossain vaiheessa sen pitäisi rullata niin, että vanhemmat rivit poistuvat näkyvistä ja uusin tulee päällimmäiseksi.
Luultavasti rullauksen joutuu tekmään näillä tiedoilla rivein uudelleenkirjoittamisen avulla, mutta olisiko tähän valmiimpia ratkaisuja.
Sitten olisi hyvä jotenkin saada näkyvät data_cells -arvot lukituiksi niin, että vain syöterivillä voi kirjoittaa rivejä. Disabled tummentaa näköjään kentän eikä siksi vaikuta käyttökelpoiselta sellaisenaan, jollei tummennusta saa jostain pois päältä.