On Thursday, March 9, 2017 at 1:03:31 AM UTC+5:30, Chris Green wrote: > I have a fairly simple application that populates a GUI window with > fields from a database table. The fields are defined/configured by a > dictionary as follows:- > > # > # > # Address Book field details, dictionary key is the database column > # > dbcol = {} > dbcol['firstname'] = col('First Name', True, False) > dbcol['lastname'] = col('Last Name', True, False) > dbcol['email'] = col('E-Mail', True, True) > dbcol['phone'] = col('Phone', True, True) > dbcol['mobile'] = col('Mobile', True, True) > dbcol['address'] = col('Address', True, False) > dbcol['town'] = col('Town/City', True, False) > dbcol['county'] = col('County/Region', True, False) > dbcol['postcode'] = col('PostCode', True, False) > dbcol['country'] = col('Country', True, False) > dbcol['notes'] = col('Notes', True, False) > dbcol['www'] = col('Web Page', True, True) > dbcol['categories'] = col('Categories', True, True) > > How can I get the fields in the GUI window in the order I want rather > than the fairly random order that they appear in at the moment? > > Currently the GUI fields are populated by a for loop as follows:- > > # > # > # Put values into the fields > # > i = 0 > for col, field in abookdb.dbcol.items(): > print(field.heading) > if (i > numkeys/2): > self.addfieldentry(col, address, field, self.rtable, i-numkeys/2) > else: > self.addfieldentry(col, address, field, self.ltable, i) > i = i + 1 > > The for loop gets the items from the dictionary in an order that isn't > what I want. How can I configure things so they're in the order I want? > > -- > Chris Green > ยท
There is OrderedDict. https://docs.python.org/2/library/collections.html#collections.OrderedDict https://docs.python.org/3/library/collections.html#collections.OrderedDict -- https://mail.python.org/mailman/listinfo/python-list