- Было у меня желание, раз уж приходится мудохаться с напильником вокруг Вин7, то чего бы не поставить Дебианчик и дотачивать его. Все пользы больше. Но не поддался слабости, доточил свой movieshell (исходники прилагаются) под Windows7. Узнал много нового, что полезно. Но в следующий раз наверняка поставлю Linux.
-
- К чему это я? Это я про то, как программулина, написанная на Python + Tkinter и отлаженная на Windows XP, оказалась практически неработоспособна на Windows7. Потому как злые люди поменяли поведение виндовых подсистем. Раньше работало так, а теперь иначе.
-
- Короче, доточил. А главное, я решил вопрос с максимизацией окна! Облазил полтырнету, нигде нет рабочего рецепта «как вызвать maximize у окна нарисованного Tkinter». Пришлось сперва использовать конструкцию вида:
- w, h = tk.winfo_screenwidth(), tk.winfo_screenheight()
- tk.geometry("%dx%d+0+0" % (w-100, h-100))
- Что нехорошо, ибо на экране полно всяких панелек, сокращающих доступную окну площадь.
-
- Перебрав с два десятка вариантов, я нашел рабочий. Вот:
h = string.atoi(sh, 0) win32gui.PostMessage(h, win32con.WM_SYSCOMMAND, win32con.SC_MAXIMIZE, 0) |
- Применяемый в коде self.tk это не что иное, как результат вызова Tkinter.Tk(), что обычно в примерах называют root. Вызов «tk.after» нужен для срабатывания максимайза после завершения инициализации окна. И еще, при использовании SendMessage оно тоже работает, но только не в Вин7. В семерке необходимо использовать асинхрон — PostMessage.
-
- Сцылки по теме
- vasnake.blogspot.com/2010/12/magnate
- sites.google.com/site/vasnake
- vasnake.blogspot.com/2010/12/blog-post_29
- vasnake.blogspot.com/2011/10/blog-post_24
- vasnake.blogspot.com/2011/10/getlogicaldrives
-
Нашлось нормальное решение задачи, см.
ОтветитьУдалитьhttp://vasnake.blogspot.com/2012/04/maximized-window.html
if sys.platform != 'linux2':
root.wm_state('zoomed')
else:
root.wm_attributes('-zoomed', True)