Диалоговое окно Tkinter и кнопка выбора вместе для выбора файла Excel и его листов - PullRequest
0 голосов
/ 23 марта 2020

Я пытался выбрать файл Excel из всплывающего окна, а затем другое всплывающее окно для выбора имени листа. Я хочу добавить выбранный лист в список (позже я буду использовать этот список для преобразования листов в csv). У меня проблема в том, что программа работает во второй раз навсегда (1-й запуск не заканчивается). Поскольку я был новичком в Python программировании, не уверен, что происходит, я думаю,

  1. Выберите файл Excel из всплывающего диалогового окна
  2. Выберите лист из кнопки проверки

Вот что у меня есть:

from tkinter import filedialog
from tkinter import *
import xlrd

window1 = Tk()
window1.title("GUI app")
window1.attributes("-topmost", True)
window1.withdraw()
window1.geometry("300x500")
# Select the Excel file from popup Dialog box
xl_file_path = filedialog.askopenfilename(initialdir="C:\\Users", title="Select file",
                                          filetypes=(("Excel Files", "*.xlsx"), ("all files", "*.*")))

# workbook = xlrd.open_workbook(xl_file_path)
print(xl_file_path)
window1.mainloop()

window2 = Tk()
window2.title("GUI app")
window2.attributes("-topmost", True)
window2.withdraw()
window2.geometry("300x500")


List = []
varList = []


def add2list():
    global List
#    List = []
    for item in varList:
        if item.get() != "":
            List.append(item.get())
    print(List)


class Check:
    x = 0

    def __init__(self, lbl):
        self.var = StringVar()
        self.cb = Checkbutton(window2, text=lbl, variable=self.var, onvalue=lbl, offvalue="")
        self.cb.grid(row=Check.x, column=1, sticky=W)
        Check.x += 1
        varList.append(self.var)


workbook = xlrd.open_workbook(xl_file_path)
for sheet in workbook.sheet_names():
    print('Sheet Name: '+sheet)
    Check(sheet)

b1 = Button(window2, text="Add", command=add2list)
b1.grid(row=1, column=2)
b2 = Button(window2, text="Click", command=window2.destroy)
b2.grid(row=1, column=3)
print(List)
window2.mainloop()

# print('End.........of program')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...