Форум сайта python.su
1
Вложенный цикл на 66 строке отрабатывает только один раз. Не пойму почему?
import os import configparser from gi.repository import Gtk class EQWindow(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="EQ") self.connect("delete-event", Gtk.main_quit) self.set_size_request(250, 250) self.set_hexpand(False) self.set_border_width(10) try: config = configparser.ConfigParser() config.read('set-eq.ini') leq = config['EQ-Settings']['lasteq'] self.mdict = leq.strip('[]').split(',') except: config = configparser.ConfigParser() config.add_section('EQ-Settings') config.set('EQ-Settings','lasteq','[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]') with open('set-eq.ini', 'w') as cfgfile: config.write(cfgfile) config.read('set-eq.ini') leq = config['EQ-Settings']['lasteq'] self.mdict = leq.strip('[]').split(',') self.scale_n = {36:'-24', 35:'-23',34:'-22',33:'-21',32:'-20',31:'-19', 30:'-18',29:'-17',28:'-16',27:'-15',26:'-14',25:'-13',24:'-12',23:'-11', 22:'-10',21:'-9',20:'-8',19:'-7',18:'-6',17:'-5',16:'-4',15:'-3', 14:'-2',13:'-1',12:'0',11:'1',10:'2',9:'3',8:'4',7:'5',6:'6',5:'7', 4:'8',3:'9',2:'10',1:'11',0:'12'} self.grid = Gtk.Grid() self.add(self.grid) self.save_preset_eq = Gtk.Label('Сохранить имя настройки') self.im_save = Gtk.Image()# Создание иконок из стока для кнопки self.im_save.set_from_stock(Gtk.STOCK_OK, 4) self.button_save = Gtk.Button() self.button_save.set_image(self.im_save) self.button_save.set_relief(Gtk.ReliefStyle.HALF) self.button_save.set_resize_mode(Gtk.ResizeMode.PARENT) self.button_save.set_alignment(0.5, 0.5) self.button_save.connect("clicked", self.ret_md) self.name_entry = Gtk.Entry() self.grid.attach(self.save_preset_eq, 0, 1, 5, 1) self.grid.attach(self.name_entry, 5, 1, 9, 1) self.grid.attach(self.button_save, 14, 1, 3, 1) self.sc_l = [Gtk.Scale.new_with_range(Gtk.Orientation.VERTICAL, 0, 36, 0.1) for x in range(18)] self.label_l = [Gtk.Label.new() for x in range(18)] c = 0 for x in self.sc_l: self.label_l[c].set_width_chars(2) x.set_draw_value(False) x.set_value_pos(Gtk.PositionType.TOP) x.set_has_origin(True) x.connect("change-value", self.v) self.grid.attach(self.label_l[c], c, 2, 1, 1) self.grid.attach(x, c, 3, 1, 10) for k, v in self.scale_n.items(): if str(self.mdict[c]) == v: print('True ==> ', self.mdict[c], k, v) self.label_l[c].set_label(v) x.set_value(k) c += 1 #self.grid.attach(self.button, 7, 13, 4, 1) self.grid.set_row_homogeneous(False) self.grid.set_column_homogeneous(False) self.grid.set_row_spacing(20) self.grid.set_column_spacing(30) self.show_all() def ret_md(self, *args): print(self.mdict) self.write_cfg_prs() return self.mdict def write_cfg_prs(self): if os.path.isfile(os.path.dirname(os.path.realpath(__file__))+'/set-eq.ini'): config = configparser.ConfigParser() config['EQ-Settings'] = {'LastEQ': self.mdict} with open('set-eq.ini', 'w') as configfile: config.write(configfile) def v(self, *value): for x in range(0, 18): if round(self.sc_l[x].get_value()) == round(value[2]): self.label_l[x].set_label(self.scale_n.get(round(value[2]))) self.mdict[x] = int(self.scale_n.get(round(value[2]))) EQWindow() Gtk.main()
for k, v in self.scale_n.items(): if str(self.mdict[c]) == v: print('True ==> ', self.mdict[c], k, v) self.label_l[c].set_label(v) x.set_value(k)
Отредактировано ivsatel (Фев. 15, 2015 12:59:43)
Офлайн
857
Такой вставь временно.
for x in self.sc_l: self.label_l[c].set_width_chars(2) x.set_draw_value(False) x.set_value_pos(Gtk.PositionType.TOP) x.set_has_origin(True) x.connect("change-value", self.v) self.grid.attach(self.label_l[c], c, 2, 1, 1) self.grid.attach(x, c, 3, 1, 10) print('See 1') for k, v in self.scale_n.items(): print('See 2') if str(self.mdict[c]) == v: print('See 3') print('True ==> ', self.mdict[c], k, v) self.label_l[c].set_label(v) x.set_value(k) c += 1
Офлайн
1
py.user.next
Приведя к int() сравнение отрабатывает, а в строковом представлении нет…
if int(self.mdict[c]) == int(v)
Офлайн
857
Посмотри типы.
for x in self.sc_l: self.label_l[c].set_width_chars(2) x.set_draw_value(False) x.set_value_pos(Gtk.PositionType.TOP) x.set_has_origin(True) x.connect("change-value", self.v) self.grid.attach(self.label_l[c], c, 2, 1, 1) self.grid.attach(x, c, 3, 1, 10) print('See 1') for k, v in self.scale_n.items(): print('See 2') print('Type 1', type(self.mdict[c]), type(v)) if str(self.mdict[c]) == v: print('See 3') print('True ==> ', self.mdict[c], k, v) self.label_l[c].set_label(v) x.set_value(k) c += 1
Офлайн
1
py.user.nextТипы приходят строковые. Тут скорее всего моя криворукость при обработке данных ConfigParser(). В общем есть над чем поработать. Спасибо за помощь!
Посмотри типы.
Офлайн