Форум сайта python.su
Вот:
# -*- coding: utf-8 -*- from Tkinter import * from ConfigParser import ConfigParser import os def cfg_r(): config = ConfigParser() config.read("tree_settings.ini") wl = config.get('settings','wl') hl = config.get('settings','hl') if os.path.exists('tree_settings.ini') and 799 < int(config.get('settings','wl')) < 1921 and 599 < int(config.get('settings','hl')) < 1081: print('okokok') else: cfg_def() def cfg_def(): config = ConfigParser() config.read("tree_settings.ini") config.set('settings','wl','800') config.set('settings','hl','600') with open("tree_settings.ini", 'w') as configfile: config.write(configfile) def cfg_s(): print('save param') def root_w_destroy(): cfg_s() root.destroy() root = Tk() root.protocol('WM_DELETE_WINDOW', root_w_destroy) root.geometry(wl+'x'+hl) root.minsize(800,600) root.maxsize(1920,1080) root.mainloop()
Офлайн
Вы хотите в с использованием конфига .ini конфигурировать рабочее приложение?
Вообще, конечно, я бы так не делал. Проще было бы дать минимально разумные размеры и возможность для ручного конфигурирования с запоминанием положения. Хотя ситуации бывают разные, но это сильно усложняет приложение.
Для решения задачи в таком формате есть несколько вариантов, но все они с ООП
Офлайн
Я просто учусь. В данном случае не могу разобраться с последовательностью присвоений переменных.
Вот например тут ругается "UnboundLocalError: local variable ‘config’ referenced before assignment" :
def cfg_r(): if os.path.exists('tree_settings.ini'): config = ConfigParser() config.read("tree_settings.ini") wl = config.get('settings','wl') hl = config.get('settings','hl') elif 799 < int(config.get('settings','wl')) < 1921 and 599 < int(config.get('settings','hl')) < 1081: print('okokok') else: cfg_def()
Офлайн
Так работает. осталось записывать состояние при закрытии и кроме размеров, указать и положение:
# -*- coding: utf-8 -*- from Tkinter import * from ConfigParser import ConfigParser import os def cfg_read_file(): if os.path.exists('tree_settings.ini'): cfg_read_settings() else: cfg_default() def cfg_read_settings(): config = ConfigParser() config.read("tree_settings.ini") wl = config.get('settings','wl') hl = config.get('settings','hl') if 799 < int(config.get('settings','wl')) < 1921 and 599 < int(config.get('settings','hl')) < 1081: pass else: cfg_default() def cfg_default(): file = open('tree_settings.ini', 'w') file.write('[settings]\nwl = 800\nhl = 600') file.close() cfg_read_file()
Отредактировано Ubhra (Июнь 27, 2016 21:42:37)
Офлайн
Луче использовать менеджер контекста with иначе придется самому контролировать открытие-закрытие.
Офлайн