Найти - Пользователи
Полная версия: Условия if else
Начало » Python для новичков » Условия if else
1 2
Ubhra
Вот:

# -*- 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()
4kpt_IV
Вы хотите в с использованием конфига .ini конфигурировать рабочее приложение?
Вообще, конечно, я бы так не делал. Проще было бы дать минимально разумные размеры и возможность для ручного конфигурирования с запоминанием положения. Хотя ситуации бывают разные, но это сильно усложняет приложение.

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

Вот например тут ругается "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()
Хотя после проверки наличия файла, сразу присвоение.
Ubhra
Так работает. осталось записывать состояние при закрытии и кроме размеров, указать и положение:
# -*- 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()

Подскажите еще пожалуйста, после file.write нужно закрывать file.close()
Нужно ли это делать при config.get или config.set ?
4kpt_IV
Луче использовать менеджер контекста with иначе придется самому контролировать открытие-закрытие.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB