Tkinter GUI исчезает, когда появляется диалог выбора файла - PullRequest
0 голосов
/ 01 июня 2019

Справочная информация: Я строю графический интерфейс для приложения PDF. Это приложение требует, чтобы пользователь выбирал местоположение файла и предоставлял некоторую дополнительную информацию, чтобы можно было создать титульную страницу и затем добавить ее в PDF. Я выбрал Tkinter для создания GUI для этого приложения. Я разрабатывал на Mac OS.

Проблема: Я могу создать диалоговое окно выбора файла после нажатия кнопки формы, однако графический интерфейс пользователя исчезает сразу после появления диалогового окна выбора файла. Кто-то знает, что вызывает это?

from tkinter import *
from tkinter import filedialog

root = Tk()
Label(root, text='Submittal No. ').grid(row=0)
Label(root, text='Project Name ').grid(row=1)
Label(root, text='Product Name ').grid(row=2)
e1 = Entry(root)
e2 = Entry(root)
e3 = Entry(root)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=2, column=1)

def fileSelector():
    root.withdraw()
    root.fileName = filedialog.askopenfilename()
    print(root.fileName)

Button(root, text='Select PDF file ', command=fileSelector).grid(row=3)

if __name__ == "__main__":
    mainloop()

Ответы [ 2 ]

2 голосов
/ 01 июня 2019

В вашей функции fileSelector строка root.withdraw используется для того, чтобы корневое окно исчезло при его сохранении.

Вы можете удалить эту строку, чтобы графический интерфейс оставался видимым, или если вы хотите предотвратитьПользователь не может взаимодействовать с графическим интерфейсом, пока имя файла filedialog.askopenfile не будет разрешено, вы можете сделать так, чтобы окно позже появлялось с помощью функции deiconify:

def fileSelector():
    global filename
    root.withdraw()
    root.fileName = filedialog.askopenfilename()
    root.deiconify()
    print(root.fileName)
2 голосов
/ 01 июня 2019

Причина, по которой ваш GUI исчезает, заключается в том, что оператор

 root.withdraw()

удаляет этот оператор, и ваш GUI остается видимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...