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

时间:2018-05-06 11:16:13

标签: python-3.x tkinter

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

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())))

“testo”是

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

非常感谢!!

1 个答案:

答案 0 :(得分:1)

首先使它工作,然后使它美丽;你有三个清单:

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]

以Text小部件为例:

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)

如果你认为有必要,你可以用list comprehension或lambda重写它。

另见The Tkinter Text Widget