Помощь новичку в некоторых аспектах (много вопросов)

55 просмотраgui
0
0 Комментариев

Всем доброго времени суток!

Только начал изучать Python (версия 3.7.1, Windows 10) — и есть некоторые вопросы. Заранее прошу прощения за, возможно, глупые для разбирающихся — но мне некоторые аспекты пока непонятны. У меня куча литературы скачана по программированию на Python, но пока катастрофически некогда читать. Да, там объясняется про графический интерфейс (оттуда и взял все знания) — но про мои трудности ничего не сказано. Или надо все прочесть сначала — тогда, может быть, некоторые вопросы отпадут. Но я даже не представляю, когда бы смог одну книгу закончить полностью — цейтнот по времени чудовищный…

Итак…

Первую программу я написал в виде шуточной викторины в текстовом формате. Все работало прекрасно.

Потом решил подняться на ступеньку выше и придать ей графический интерфейс. И вот тут возникли трудности:

  1. В текстовом варианте она была написана сверху-вниз линейно — т.е. начало вверху, конец внизу. Но при использовании кнопок и окон приходится (ну, я только такое нашел исполнение) использовать ‘command=…’  — и далее вводить имя ПРЕДВАРИТЕЛЬНО определяемого куска кода (через def). В итоге сейчас получается начало программы в самом конце — а все последующие этапы предварительно определяются выше. Вопрос в том, что последовательность кода не выполняется в пределах даже одного def-сегмента. В текстовом варианте программы действия просто выполнялись по порядку. А здесь (см. код ниже) у меня выполняется первый вопрос — а потом ничего не происходит. При этом при выборе любого варианта окно message_fagberge появляется, но при его закрытии программа ничего больше не делает. Даже если перебрать все варианты. Как заставить ее перейти ко второму вопросу?

2. Правильно ли я делаю сообщения об ошибках путем определения messagebox через def выше? Потому что по-другому (если вставить после command=) оно не работает. Но тогда при определении этого messagebox заранее у меня опять вопрос: а как после его выполнения логика программы пойдет дальше? Потому что точку исполнения перебросило выше — и дальше что? Или он (Python) просто вызывает ее в этом месте — и потом должен идти дальше из текущей точки программы? У меня это не работает (см. п. 1)

Или можно написать этот messagebox ниже, после всех вариантов — но как тогда заставить при нажатии кнопки обратиться к нему? Как вообще перемещаться по частям кода в пределах программы (знаю, что goto использовать крайне не рекомендуется)?

3. Не удаляются кнопки и текстовые части при смене пунктов меню (см. скриншот). То, что заменяется чем-то новым — вроде исчезает. А вот то, что нечем заменить — остается (см. рисунок). На него не действует ни destroy, ни forget. Даже не помогает затереть чем-нибудь с пробелами (хотя это костыли). Как это побороть?

4. В графическом интерфейсе не работает задержка sleep — хотя она и стоит в конце (см. код выше. Сейчас просто закомментировано, т.к. не работает), ПОСЛЕ ожидания вариантов выбора, но выполняется почему-то сначала, отсчитывает указанные секунды — и только потом появляются пункты меню и тут же окно, что время на выбор кончилось. Почему так? В текстовом варианте все работало хорошо

Пока все. Не могу сдвинуться с этого места — поэтому других вопросов не возникает…

Заранее спасибо за помощь!


Добавить комментарий

0 Answers

Python Опубликовано 12.12.2018
Напишите свой ответ на данный вопрос.
Scroll Up