在另一个文本框多行中打印文本框的内容时出现问题

Problem printing the contents of a text box in another textbox multiline

我正在用 Tkinter 制作一个小应用程序,用于教育目的,它包括按下按钮并在另一个多行文本框中显示文本框的内容……

问题是你看到了这个:

<bound method Text.get of <tkinter.Text object.! Text2 >>

而不是我手动写的文本框内容。我想在多行文本框(称为文本)中打印的文本框称为 textbox_test。 Textbox_test被称为

A = f "{test_textbox.get} {'' .join (word2)} {abitanti} abitanti su un'area di {superficie}".

文本框中的问题

test_textbox = Text(window,width=10,height=1)
test_textbox.pack()
test_textbox.place(x=5, y=100)

如何消除上述错误并正确显示文本框的文本?我附上完整的代码。谢谢

from tkinter import *
from tkinter import ttk
import tkinter as tk
import sqlite3
import random

window=Tk()
window.title("xxxxxxxx")
window.geometry("750x750")
window.configure(bg='#78c030')

con = sqlite3.connect('/home/xxxxxxxxxxx/Database.db')
cursor = con.cursor()

# Search Data
def city(name_city):
    name_city = city.get()
    cursor.execute('SELECT * FROM Info WHERE City =?',(name_city,))
    results = cursor.fetchone()
    return results


# Print Data in textbox multiline
def write():
    name_city = city.get
    results = city(name_city)
    inhabitants = results[2]
    surface = results[3]

    if categoria.get() == "Test 1" and sottocategoria.get() == "Test 1.1":

        cursor.execute('SELECT xxxxxxxx FROM TableExample ORDER BY RANDOM() LIMIT 1')
        word2 = cursor.fetchone()
        text.delete(1.0,END)
        
        A= f"{test_textbox.get} {''.join(word2)} {inhabitants} inhabitants on an area of {surface}"
        B= f"Che sale a"
        
        text.insert(tk.END, random.choice([A, B]))

   

button2 = Button(window, text="Button2", bg='white', command = write)
button2.pack()
button2.place(x=5, y=330)



### TEXTBOX MULTILINE ###
text = Text(window,width=63,height=38)
text.pack()
text.place(x=180, y=24)

### TEXTBOX ### 
test_textbox = Text(window,width=10,height=1)
test_textbox.pack()
test_textbox.place(x=5, y=100)


### CATEGORIA E SOTTO CATEGORIA ###
cat=StringVar()
sub_cat=StringVar()

def change_val(*args):
    if cat.get() == "Test 1":
        sottocategorias = ["Test 1.1", "Test 1.2", "Test 1.3"]
        sottocategoria.config(values=sottocategorias)
    else:
        sottocategorias = ["aaaa"]
        sottocategoria.config(values=sottocategorias)
    
categorias=["Test 1", "Test 2", "Test 3"]
categoria=ttk.Combobox(window,value=categorias,textvariable=cat,width=16)
categoria.place(x=5, y=25)
cat.set("Scegliere categoria")

sottocategorias=["aaaa"]
sottocategoria=ttk.Combobox(window,textvariable=sub_cat,value=sottocategorias,
width=16)
sottocategoria.place(x=5, y=55)

cat.trace("w",change_val)


### COMBOBOX ###

def combo_nation():
    cursor.execute('SELECT DISTINCT Nation FROM Info')
    result=[row[0] for row in cursor]
    return result

def combo_city(event=None):
    val = city.get()
    cursor.execute('SELECT City FROM Info WHERE Nation = ?', (val,))
    result = [row[0] for row in cursor]
    city['value'] = result
    city.current(0)
    return result


nation=ttk.Combobox(window,state="readonly")
nation['value'] = combo_nation()
nation.bind('<<ComboboxSelected>>', combo_city)
nation.place(x=5, y=150,height = 25, width = 180)


city=ttk.Combobox(window,state="readonly")
city.place(x=5, y=180, height = 25, width = 180)


window.mainloop()

重要提示:如果您尝试更改为 A = f "{test_textbox.get (" 1.0 "," end-1c ")} {'' .join (word2)},这不好。应用程序将无法打开。如果没有此代码,则会打开

正如@BryanOakley 在评论中所说,您需要 get() 到 运行 它和小部件 Text 需要它和

这样的参数
A = f"{test_textbox.get('1.0','end-1c')} ...

它没有用,因为它只是您必须以全文替换的部分,但您似乎替换了所有文本。因为您没有 运行 在控制台中编写代码,所以您看不到可以解释问题的错误消息

整行应该是

A = f"{test_textbox.get('1.0','end-1c')} {''.join(word2)} {inhabitants} inhabitants on an area of {surface}"