Импорт модуля при нажатии кнопки tkitner - PullRequest
0 голосов
/ 31 мая 2019

У меня есть программа, включающая несколько классов в виде фреймов в tkinter.У меня есть отдельный файл, который использует pygame и является шахматной игрой.Я хочу иметь возможность загрузить этот файл и выполнить его, когда я нажимаю определенную кнопку tkinter в одном из кадров и затем закрываю этот файл.Я знаю, что импорт модуля в начале файла tkinter запускает его немедленно, что мне не нужно.Я хочу, чтобы он работал только при нажатии кнопки.

Я пытался использовать другие модули, которые не работают.Я попытался использовать функции, которые также не работали.

Я ожидаю, что смогу запустить шахматный файл при нажатии кнопки вместо немедленного запуска этого файла удержания.Однако при запуске шахматный файл выполняется немедленно, а этот другой файл даже не запускается.

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Если вы хотите открыть файл в собственном редакторе, так же, как двойной щелчок по окнам, Вы могли бы позвонить os.startfile(file). Это запускает файл.

Пример:

os.startfile('C:\\Windows\\System32\\notepad.exe')

Это запустит блокнот.

0 голосов
/ 31 мая 2019

Если вы вложите свой основной код Python в if __name__ == "__main__":, он будет работать только в том случае, если файл исполняется, а не загружается как модуль.Это обычная практика.

И если вы сделаете свой spam.py таким:

def main():
    do_things_here

if __name__ == "__main__":
    main()

Вы можете просто import spam в начале ничего не делать и делать spam.main(), когда хотите его выполнить.

Но если вы действительно хотите загружать модули динамически, exec("import " + module_name)

...