Tkinter (python3) 如何在文本小部件中垂直插入文本?



我用 Tkinter 创建了一个 botton,如下所示:

self.calc_amm = Button(self.window)
self.calc_amm["text"] = "Calcola"
self.calc_amm["command"] = lambda: self.testo.insert(1.0, (operazioni.ammortamento(var_sel.get(), self.inserisci_imponibile.get(), self.inserisci_tasso.get(), var_periodo.get(), self.durata.get())))
self.calc_amm.grid(row = 6, column = 0, padx = 2, pady = 2)

哪里

self.calc_amm["command"] = lambda: self.**testo**.insert(1.0, (operazioni.ammortamento(var_sel.get(), self.inserisci_imponibile.get(), self.inserisci_tasso.get(), var_periodo.get(), self.durata.get())))

"德图"是

self.testo = Text(f)
self.testo["background"] = "white"
self.testo.grid(row = 4, column = 0, columnspan = 4)

这个想法是获取值var_sel.get(), self.inserisci_imponibile.get(), self.inserisci_tasso.get(), var_periodo.get(), self.durata.get()并将值传递给函数operazioni.ammortamento(a,b,c,d,e)。 在函数operazioni.ammortamento(a,b,c,d,e)中,我做了一些计算,并返回 3 个列表 (return(arr_rata, arr_quota_cap, arr_cap_res)(。

我在"文本"小部件中的输出如下所示:

{1 2 3 4 5 6 7 8 9 10} {5000 5000 5000 5000 5000 5000 5000 5000 5000 5000} {4500 4000 3500 3000 2500 2000 1500 1000 500 0}

我该怎么做才能获得如下所示的输出???

Something: Someth.:   Someth.:
{1          5000      4500
2           5000      4000
3           5000      3500
4           5000      3000
5           5000      2500
6           5000      2000
7           5000      1500
8           5000      1000
9           5000       500
10}         5000         0

非常感谢!!

首先让它工作,然后让它变得漂亮;您有三个列表:

arr_rata = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr_quota_cap = [5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000]
arr_cap_res = [4500, 4000, 3500, 3000, 2500, 2000, 1500, 1000, 500, 0]

以制作文本小部件为例:

from tkinter import *
root = Tk()
testo = Text(root, width=40, height=15)
testo.grid(padx=10, pady=10, sticky='nsew')

将它们打印到文本小部件,一次一个索引:

testo.delete(1.0,END)   # Delete text from widget if there is any
testo.insert(END,'rata:   quota_cap:   cap_res:n')
for index in range(len(arr_rata)):
col1 = '{:<8}'.format(arr_rata[index])
col2 = '{:<13}'.format(arr_quota_cap[index])
col3 = '{}'.format(arr_cap_res[index])
line = col1 + col2 + col3 + 'n'
testo.insert(END,line)

如果您认为有必要,您可以稍后使用列表理解或 lambda 重写它。

另请参阅 Tkinter 文本小部件

最新更新