Tkinter:在文本小部件中访问文本输入的问题

时间:2021-03-14 08:49:25

标签: python tkinter

我尝试创建一个程序,该程序将接收一个人的症状并返回他们所患的疾病。这是项目的 GUI 部分。

from tkinter import *
root = Tk()
root.title("Health GUI")
root.geometry("1000x625")

symptoms_list = []
    
def print_symptoms():
    print(symptoms_list)

def typeSymptoms():
    gap3 = Label(text="").pack()
    symptoms_entry = Text(width=50, height=20)
    symptoms_entry.pack()
    symptoms_list.append(symptoms_entry.get(1.0, END))
    done_symptoms = Button(text="I have written my symptoms", width=25, height=5, command=lol)
    done_symptoms.pack()

gap1 = Label(text="").pack()
title = Label(text="HEALTH GUI", font=30).pack()
gap2 = Label(text="").pack()
start_button = Button(text="Click here to start", width=30, height=5, command=typeSymptoms, font=20).pack()

root.mainloop()

为了简单起见,我尝试将用户给出的症状打印到控制台,但它给了我一个带有“\n”的列表。请帮忙。谢谢!(PS:前天学过Tkinter,所以不太了解)

1 个答案:

答案 0 :(得分:0)

目前,您的变量 symptoms_list 只保存新创建的 Text 小部件的内容,因为您在启动时附加了此内容。

如果要将症状添加到列表中,则需要在按下按钮时调用函数 lol()

这个函数应该类似于:

def lol():
    symptoms_text = symptoms_entry.get(1.0, END)
    symptoms_list = symptoms_text.split('\n')
    print_symptoms()

但是,您的小部件和 symptoms_list 必须是全局变量才能使该程序正常工作。当您熟悉 Tkinter 时,学习如何将对话框创建为具有属性的类可能会更好。这使得在方法之间共享值变得更加容易。