更改后如何获取tkinter文本框文本?

2024-03-28 20:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

现在是使用全局变量的适当时间吗?我应该使用stringVar吗?在用户更改了文本的值之后,我可以做些什么来收集文本?你知道吗

当我在get_txtmsg()函数中的my_msg = sms_textbox.get('1.0', 'end-1c')行下面添加一个print(my_msg)语句时,它将打印文本已经更改。你知道吗

askfilename_sms()函数中,相同的print(my_msg)语句返回"Hi, how are you?"

    def askfilename_sms():
        print(my_msg)

    ent3 = ttk.Labelframe(
        tab1, text='New Client Survey SMS')
    ent3.grid(
        row=3, column=0, sticky=tk.NSEW, padx=2, pady=2)

    ttk.Label(
        ent3, text='This....\n').grid(row=0, column=-0)

    def get_txtmsg():
        global my_msg
        my_msg = sms_textbox.get('1.0', 'end-1c')
        askfilename_sms()

    my_msg = "Hi, how are you?"

    sms_btn = ttk.Button(
        ent3, text="Send SMS Surveys",
        command=lambda: get_txtmsg())
    sms_btn.grid(
        row=1, column=1, padx=90, pady=10)
    sms_textbox = tk.Text(
        ent3, height=6, width=34)
    sms_textbox.insert(
        '1.0', my_msg)
    sms_textbox.grid(
        row=0, column=1)

编辑:

所以我不太清楚为什么这样做,但我把所有的函数放在一个函数中,现在它工作了(不激动,但也许这是正确的方法):

    def get_txtmsg():
        global my_msg
        my_msg = sms_textbox.get('1.0', 'end-1c')
        sms_msg_box = tk.messagebox.askyesno(
            title='Are you ready to begin?',
            message='click to send')
        if sms_msg_box:
            tk.messagebox.showinfo(
                message='Please select New Client Report')
            sms_nc_filename = filedialog.askopenfilename(
                title="Select New Client file",
                filetypes=(("excel files", "*.xls"), ("all files", "*.*")))
            if not sms_nc_filename:
                return
            else:
                send_sms.send_survey_text(sms_nc_filename, my_msg)

    my_msg = "Hi, how are you"

    sms_btn = ttk.Button(
        ent3, text="Send SMS Surveys",
        command=lambda: get_txtmsg())
    sms_btn.grid(
        row=1, column=1, padx=90, pady=10)
    sms_textbox = tk.Text(
        ent3, height=6, width=34)
    sms_textbox.insert(
        '1.0', my_msg)
    sms_textbox.grid(
        row=0, column=1)

Tags: 函数textyougetmycolumnmsgsms