Сейчас я учусь на уроке информатики в колледже, и мы подошли к той части нашего курса Python, где мы учимся читать, писать и добавлять к внешним файлам. Нам дали задание, в котором нам нужно было использовать диалоговое окно файла tkinter, чтобы открыть файл с информацией, которую нам нужно прочитать, а затем создать его для записи некоторой информации путем обработки данных первого файла.
Но я столкнулся с серьезной проблемой. В классе нас учили, что мы можем заставить базовое окно tkinter исчезнуть, не удаляя диалог, используя root.withdraw() (при условии, что мы уже импортировали tkinter и создали корень), прежде чем использовать функции Askopenfilename() или Asksaveasname(). И тем не менее, каждый раз, когда я вначале пытаюсь запустить программу с root.withdraw(), она бесконечно зависает и ни черта не делает.
Но потом, если я перенесу ее в конец после обоих операторов, в которых я выполняю свою обработку, откроется диалог, но с окном tkinter! Что, черт возьми, происходит с этой программой? Как мне сохранить окно закрытым, одновременно выполняя два отдельных оператора with?
Вот код, упрощенный до одного оператора with и исключающий его содержимое, поскольку они не имеют реального влияния на происходящее:
Код: Выделить всё
def main():
#import file dialog modules
from tkinter.filedialog import askopenfilename, asksaveasfilename
# This will prevent root (ghost) window
import tkinter
root = tkinter.Tk()
root.withdraw()
read_file_name = askopenfilename()
with open(read_file_name, "r") as file:
...
Подробнее здесь: https://stackoverflow.com/questions/798 ... he-program
Мобильная версия