Почему диалоговое окно файла не открывается, когда я использую метод вывода() в начале программы?Python

Программы на Python
Ответить
Anonymous
 Почему диалоговое окно файла не открывается, когда я использую метод вывода() в начале программы?

Сообщение Anonymous »

Быстрое редактирование для тех, кто в будущем увидит этот пост: Я ЗНАЮ общий способ импорта модулей в верхнюю часть скрипта, вне каких-либо методов. Но класс, в котором я работаю, по какой-то причине использует импорт внутри функции как соглашение. Я думаю, это потому, что мы используем его только для открытия краткого диалогового окна файла, поэтому, возможно, не было сочтено необходимым иметь его на глобальном уровне? Я не знаю, пожалуйста, не обращайте внимания на его расположение.
Сейчас я учусь на уроке информатики в колледже, и мы подошли к той части нашего курса 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:
...
Никакие другие решения, которые я нашел для подобных запросов, не работают в этом конкретном случае, ни с помощью root.update(), ни с помощью перемещения метода вывода(), ни чего-либо в этом роде. Я был бы признателен за любые отзывы о том, как заставить это работать должным образом.

Подробнее здесь: https://stackoverflow.com/questions/798 ... he-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»