Как очистить или обновить OptionMenu после нажатия кнопки «Отправить» - PullRequest
0 голосов
/ 24 сентября 2019

Меню параметров не будет обновляться или очищаться при нажатии кнопки «Отправить».Он напишет на лист Excel.Текстовые поля очищаются, но не раскрывающийся список.

Я попытался изменить '' 'entry1.delete (0, END)' '' на '' 'named.delete (0, END)' ''

from tkinter import *
import pandas as pd
import tkcalendar as tkc

def submit_fields():
    path = 'C:\Python32\RequestForm.xlsx'
    df1 = pd.read_excel(path)
    SeriesA = df1['Name']
    SeriesB = df1['Reason']
    SeriesC = df1['startDate']
    SeriesD = df1['endDate']
    A = pd.Series(named.get())
    B = pd.Series(reasond.get())
    C = pd.Series(entry3.get())
    D = pd.Series(entry4.get())
    SeriesA = SeriesA.append(A)
    SeriesB = SeriesB.append(B)
    SeriesC = SeriesC.append(C)
    SeriesD = SeriesD.append(D)
    df2 = pd.DataFrame({"Name":SeriesA, "Reason":SeriesB, "startDate":SeriesC, "endDate":SeriesD})
    df2.to_excel(path, index=False)
    entry1.delete(0, END)
    entry2.delete(0, END)
    entry3.delete(0, END)
    entry4.delete(0, END)


master = Tk()
master.geometry('250x250')
master.title("Request Form")

# Name dropdown menu
Names1A = ["Jarrod","Jeremy", "Joe", "John", "Rob", "Spencer"]
Label(master, text="Your Name").grid(row=0)
named = StringVar()
named.set("Choose Name")
drop = OptionMenu(master,named, *Names1A)
drop.grid(row=0, column=1)

# Reason dropdown menu
Reason1A = ["Vacation","Training", "Field Visit", "Expo", "Other"]
Label(master, text="Reason").grid(row=1)
reasond = StringVar()
reasond.set("Choose Reason")
drop1 = OptionMenu(master,reasond, *Reason1A)
drop1.grid(row=1, column=1)

# Dates
Label(master, text="Start Date").grid(row=2)
Label(master, text="End Date").grid(row=3)


entry1 = Entry(master)
entry2 = Entry(master)
entry3 = Entry(master)
entry4 = Entry(master)

#entry1.grid(row=0, column=1, pady=4)
#entry2.grid(row=1, column=1, pady=4)
entry3.grid(row=2, column=1, pady=4)
entry4.grid(row=3, column=1, pady=4)


Button(master, text='Quit', command=master.destroy).grid(row=4,column=0, pady=4)
Button(master, text='Submit', command=submit_fields).grid(row=4,column=1, pady=4)

mainloop()

Ожидаемые результаты: информация записывается в таблицу Excel и обновляется или очищается после нажатия кнопки отправки.

1 Ответ

0 голосов
/ 24 сентября 2019

привет, проблема здесь

 #Name dropdown menu
 Names1A = ["Jarrod","Jeremy", "Joe", "John", "Rob", "Spencer"]
 Label(master, text="Your Name").grid(row=0)
 named = StringVar()
 named.set("Choose Name")
 drop = OptionMenu(master,named, *Names1A)
 drop.grid(row=0, column=1)

, но правильный способ - добавить StringVar () в OptionMenu и после добавления всех ваших голосов.

# Name dropdown menu
 Label(master, text="Your Name").grid(row=0)
 named = StringVar()
 drop = OptionMenu(master,named, "Choose Name","Jarrod","Jeremy", "Joe", "John", "Rob", "Spencer")
 named.set("Choose Name")
 drop.grid(row=0, column=1)

и при отправкеВы можете установить предпочитаемое значение, используя метод set StringVar ()

entry3.delete(0, END)
entry4.delete(0, END)
named.set("Choose Name")
reasond.set("Choose Reason")
...