Форум сайта python.su
Добрый день.
Только учусь.
Пытаюсь создать окно с параметрами из cfg файла (ширина, высота + фулскрин).
Окно создается всегда в центре экрана, размеры из cfg.
Пока не знаю как открывать окно развернутым (не на весь экран, а именно развернутым, но опять же по условию, если разрешение экрана не превысит 1980x1920).
Долго переставлял все с места на место. PyScripter пару раз при отладке зависал, даже раз винду повесил.
Пока что использую только то, что хоть частично, но понял.
Удаляет и создает cfg файл нормально. А вот попробовал руками записать в него в первое значение 10, а во второе 4000 (заведомо не верные) и винда сдохла.
from tkinter import * from configparser import SafeConfigParser import os # перезапись конфиг файла def rewrite(): if os.path.exists('default.cfg'): cf = open('default.cfg') cf.close() os.remove('default.cfg') cf=open('default.cfg','w', encoding="utf-8") cf.write('[set_file]\ns_height=500\ns_width=800\ns_full=0') cf.close() else: cf=open('default.cfg','w', encoding="utf-8") cf.write('[set_file]\ns_height=500\ns_width=800\ns_full=0') cf.close() # выход из программы def quick_quit(): mainframe.destroy() mainframe = Tk() mainframe.title("Name") # чтение конфиг файла mainframe.minsize(800,500) mainframe.maxsize(1980,1020) parser = SafeConfigParser() parser.read('default.cfg') # << проверка значений if os.path.exists('default.cfg'): if 800 <= int(parser.get('set_file','s_width')) <= 1980: if 500 <= int(parser.get('set_file','s_height')) <= 1920: if 0 <= int(parser.get('set_file','s_full')) <= 1: pass else: rewrite() # << построение окна parser.read('default.cfg') mainframe_x = parser.get('set_file','s_width') mainframe_y = parser.get('set_file','s_height') mainframe_screen = parser.get('set_file','s_full') mainframe_width = (mainframe.winfo_screenwidth() / 2 - int(mainframe_x) / 2) mainframe_heigth = (mainframe.winfo_screenheight() / 2 - int(mainframe_y) / 2) mainframe.geometry("%dx%d+%d+%d" % (int(mainframe_x), int(mainframe_y), mainframe_width, mainframe_heigth)) mainframe.mainloop()
Отредактировано Ubhra (Март 7, 2013 18:16:20)
Офлайн
Вы очень сумбурно написали, но если я Вас правильно понял, то Вам необходимо вот-это:
mainframe.state("zoomed")
Отредактировано 4kpt (Март 7, 2013 18:49:32)
Офлайн
Еще убила эта строка :)
if 0 <= int(parser.get('set_file','s_full')) <= 1:
cf = open('default.cfg') cf.close()
Отредактировано 4kpt (Март 7, 2013 18:55:26)
Офлайн
Напишите, чего Вы в итоге хотите добиться?
Кроме того
def rewrite(): if os.path.exists('default.cfg'): os.remove('default.cfg') cf=open('default.cfg','w', encoding="utf-8") cf.write('[set_file]\ns_height=500\ns_width=800\ns_full=0') cf.close()
Отредактировано 4kpt (Март 7, 2013 18:59:43)
Офлайн
Спасибо.
Вставил в код, заработало.
# << построение окна
parser.read('default.cfg') mainframe_x = parser.get('set_file','s_width') mainframe_y = parser.get('set_file','s_height') mainframe_screen = parser.get('set_file','s_full') if int(mainframe_screen) == 1: mainframe.state('zoomed') else: pass
Отредактировано Ubhra (Март 7, 2013 19:04:02)
Офлайн
Строку, что убила, заменить на:
if int(parser.get('set_file','s_full')) in [0, 1]:
Офлайн
Скиньте, мне, пожалуйста Ваш конфиг…
Офлайн
Офлайн
Ubhra
Вы немного неправильно работаете с configparser.
Я уже разобрался по документации как надо работать.
Сейчас срочно убегаю. Нужно забрать подарок на 8 марта.
Напишу через 1,5 - 2 часа.
Хотите подождите, хотите - посмотрите решения завтра.
Офлайн
Приношу свои извинения за несвоевременность…
За это привожу полное пояснение использования модуля ConfigParser.
Смотрите по этапам.
1. Импортируем модуль ConfigParser.
from ConfigParser import ConfigParser
cfg = ConfigParser()
cfg.add_section("root")
cfg.set(section="root", option="height", value="400") cfg.set(section="root", option="width", value="400")
with open("config_prg.ini" "w") as file_: cfg.write(file_)
cfg = ConfigParser()
cfg.read("config_prg.ini")
cfg.get(section="root", option="width")
Отредактировано 4kpt (Март 11, 2013 20:12:19)
Офлайн