Как получить текстовое поле tkinter после его изменения? - PullRequest
0 голосов
/ 03 сентября 2018

Это подходящее время для использования глобальной переменной? Должен ли я использовать stringVar? Что я могу сделать, чтобы собрать текст после того, как пользователь изменил его значение?

Когда я добавляю оператор print(my_msg) ниже строки my_msg = sms_textbox.get('1.0', 'end-1c') в функции get_txtmsg(), он напечатает, что текст изменился.

Тот же оператор print(my_msg) в функции askfilename_sms() возвращает "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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...