Как я могу заполнить поле ввода в tkinter из другого интерфейса - PullRequest
0 голосов
/ 03 марта 2019

Я импортирую функцию с именем "select_date".Эта функция запускает приложение графического интерфейса (calendar-datepicker) и возвращает выбранный год, месяц и день (функция хорошо протестирована).Я хочу заполнить запись в tkinter выбранной датой.Когда я запускаю код, запись не заполняется.Однако, когда вместо использования функции select_date для получения даты мы используем определенное значение, например, date = "гггг / мм / дд" (закомментировано в коде), программа запускается, как ожидается, и запись заполняется "гггг / мм"/ дд».

import Tkinter as tk
from mycalendar import select_date


root = tk.Tk()
root.title("My App")
root.geometry("400x400")
w = tk.Label(root, text="Aerosol Optical Depth & Trends")
w.grid(column = 0, row = 100)
w.pack()

# ~ date="yyyy/mm/dd"

e = tk.Entry()
e.pack()

e.delete(0, tk.END)

year,month,day=select_date(myinput="From Date")
date=str(year)+'/'+str(month)+'/'+str(day)

e.insert(0, date)

root.mainloop()

Дата выбора указана в следующем коде:

try:
    import tkinter as tk
    from tkinter import ttk
except ImportError:
    import Tkinter as tk
    import ttk

import datetime
from tkcalendar import Calendar, DateEntry
import tkMessageBox



def select_date(myinput):

    def example1():
        def print_sel():
            print(cal.selection_get())
            global year
            global month
            global day
            year=cal.selection_get().year
            month=cal.selection_get().month
            day=cal.selection_get().day
            #~ tkMessageBox.askyesno("Date Select", cal.selection_get())
            root.withdraw()
            result = tkMessageBox.askyesno("Date Select", cal.selection_get())
            if result == True:
                root.destroy()

        top = tk.Toplevel(root)

        cal = Calendar(top, font="Arial 14", selectmode='day', locale='en_US',
                       cursor="hand1", year=datetime.date.today().year, month=datetime.date.today().month, day=datetime.date.today().day)

        cal.pack(fill="both", expand=True)
        ttk.Button(top, text="select", command=print_sel).pack()



    root = tk.Tk()
    ttk.Button(root, text=myinput, command=example1).pack(padx=10, pady=10)




    root.mainloop()

    return year,month,day
...