abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:00 | Nová verze

    Byla vydána nová verze 15.0 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 03:00 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04 1.1 a 20.04 OTA-11. Vedle oprav chyb a drobných vylepšení je řešen také středně závažný bezpečnostní problém.

    Ladislav Hagara | Komentářů: 0
    dnes 00:33 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 16:00 | Komunita

    Fedora zve na dvoudenní testování (2. a 3. prosince), během kterého si můžete vyzkoušet nové webové uživatelské rozhraní (WebUI) projektu FreeIPA. Pomozte vychytat veškeré chyby a vylepšit uživatelskou zkušenost ještě předtím, než se tato verze dostane k uživatelům Fedory a celého linuxového ekosystému.

    Ladislav Hagara | Komentářů: 4
    včera 13:22 | IT novinky

    Eben Upton oznámil zdražení počítačů Raspberry Pi, kvůli růstu cen pamětí, a představil 1GB verzi Raspberry Pi 5 za 45 dolarů.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Humor

    Linus Torvalds na YouTube kanálu Linus Tech Tips staví dokonalý linuxový počítač.

    Ladislav Hagara | Komentářů: 6
    včera 04:11 | Nová verze

    Po 9 týdnech vývoje od vydání Linuxu 6.17 oznámil Linus Torvalds vydání Linuxu 6.18. Přehled novinek a vylepšení na LWN.net: první a druhá polovina začleňovacího okna a Linux Kernel Newbies. Vypíchnout lze například podporu protokolu PSP (PSP Security Protocol, PSP encryption of TCP connections).

    Ladislav Hagara | Komentářů: 0
    včera 03:55 | Nová verze

    Byla vydána nová stabilní verze 25.11 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Xantusia. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.

    Ladislav Hagara | Komentářů: 0
    včera 03:22 | Komunita

    Richard Hughes na Mastodonu oznámil, že se společnost Framework Computer stala sponzorem služby LVFS (Linux Vendor Firmware Service) umožňující aktualizovat firmware zařízení na počítačích s Linuxem.

    Ladislav Hagara | Komentářů: 0
    28.11. 18:55 | Humor

    Jak na webu co nejšíleněji zadávat datum? Jak to uživatelům co nejvíce znepříjemnit? V Bad UX World Cup 2025 (YouTube) se vybíraly ty nejšílenější UX návrhy. Vítězným návrhem se stal Perfect Date.

    Ladislav Hagara | Komentářů: 19
    Jaké řešení používáte k vývoji / práci?
     (34%)
     (47%)
     (19%)
     (18%)
     (23%)
     (16%)
     (24%)
     (16%)
     (18%)
    Celkem 423 hlasů
     Komentářů: 17, poslední 19.11. 21:57
    Rozcestník

    Dotaz: Python3 + TkInter: jak ulozit data z formulare?

    27.2.2017 21:15 zdenek2008 | skóre: 26
    Python3 + TkInter: jak ulozit data z formulare?
    Přečteno: 351×
    Chtel bych si upravovat data v promenne (slovniku) prostrednictvim GUI formulare. Ten formular by se mel generovat podle toho slovniku, takze pocet vstupnich poli by odpovidal poctu polozek ve slovniku, takze zmena poctu polozek slovniku by se automaticky promitla ve zmene gui formulare. To funguje celkem bez problemu, graficky vzhled zatim take neresim. Co mi ale nejde, je jak pozmenene udaje ve formulari ulozit. Idealni by bylo kliknutim na tlacitko "Save" zmenit tu promennou, ale zatim to meni vzdy jen posledni vstupni pole, protoze cyklus for generuje pouze radu totoznych identifikatoru "entry". Nemeli byste nejake tipy jak to doresit?
    CLAIMANT_PYTHON_OBJECT={
        'CLAIMANT_TITLE':'pan',
        'CLAIMANT_FIRST_NAME':'ferda',
        'CLAIMANT_SURNAME':'mravenec',
        'CLAIMANT_PLURAL':'', #s
        'CLAIMANT_PLURAL_CAPITALISED':'', #S
        'CLAIMANT_ADDRESS':'mraveniste pod smrkem',
        'CLAIMANT_POSTCODE_1111':'355',
        'CLAIMANT_POSTCODE_222':'09',
        'CLAIMANT_TELEPHONE_NUMBER':'158158158',
        'CLAIMANT_FAX_NUMBER':'',
        'CLAIMANT_EMAIL':'f.mravenec@mraveniste.cz',
        'CLAIMANT_REF':'',
        }
    
    print('dictionary:', CLAIMANT_PYTHON_OBJECT)
    
    window=Tk()
    window.title('The Claimant')
    frame=Frame(window)
    
    def show_entry_field():
       print(entry.get())
    
    for key, value in CLAIMANT_PYTHON_OBJECT.items():
        label=Label(frame, text=key)
        label.pack()
        entry=Entry(frame)
        entry.insert(0, value)
        entry.pack()
    
    button=Button(frame, text='Save', command=show_entry_field)
    button.pack()
    
    frame.pack(padx=10, pady=10)
    window.mainloop()
    
    print('dictionary amended:', CLAIMANT_PYTHON_OBJECT)
    
    
    Za pripadne napady predem diky.

    Řešení dotazu:


    Odpovědi

    Řešení 1× (zdenek2008 (tazatel))
    27.2.2017 22:32 .
    Rozbalit Rozbalit vše Re: Python3 + TkInter: jak ulozit data z formulare?
    No, někde si je všechny podrž. S minimálními změnami (není to pěkný ani dobrý) třeba takhle:
    CLAIMANT_PYTHON_OBJECT={
    	'CLAIMANT_TITLE':'pan',
    	'CLAIMANT_FIRST_NAME':'ferda',
    	'CLAIMANT_SURNAME':'mravenec',
    	'CLAIMANT_PLURAL':'', #s
    	'CLAIMANT_PLURAL_CAPITALISED':'', #S
    	'CLAIMANT_ADDRESS':'mraveniste pod smrkem',
    	'CLAIMANT_POSTCODE_1111':'355',
    	'CLAIMANT_POSTCODE_222':'09',
    	'CLAIMANT_TELEPHONE_NUMBER':'158158158',
    	'CLAIMANT_FAX_NUMBER':'',
    	'CLAIMANT_EMAIL':'f.mravenec@mraveniste.cz',
    	'CLAIMANT_REF':'',
    	}
    
    print('dictionary:', CLAIMANT_PYTHON_OBJECT)
    
    # <------
    class DictFrame(Frame):
    	def __init__(self, dictionary, *args, **kwargs):
    		super(DictFrame, self).__init__(*args, **kwargs)
    		self.dictionary = dictionary
    		self.entries = []
    
    	def append(self, entry):
    		self.entries.append(entry)
    
    	def save(self):
    		for entry in self.entries:
    			print(entry.key, '=', entry.var.get())
    			self.dictionary[entry.key] = entry.var.get()
    
    # <------
    class KeyEntry(Entry):
    	def __init__(self, key, *args, **kwargs):
    		self.key = key
    		self.var = StringVar()
    		kwargs['textvariable'] = self.var
    		super(KeyEntry, self).__init__(*args, **kwargs)
    
    window=Tk()
    window.title('The Claimant')
    frame=DictFrame(CLAIMANT_PYTHON_OBJECT, window) # <------
    
    for key, value in CLAIMANT_PYTHON_OBJECT.items():
    	label=Label(frame, text=key)
    	label.pack()
    	entry=KeyEntry(key, frame) # <------
    	entry.insert(0, value)
    	entry.pack()
    	frame.append(entry) # <------
    
    button=Button(frame, text='Save', command=frame.save) # <------
    button.pack()
    
    frame.pack(padx=10, pady=10)
    window.mainloop()
    
    print('dictionary amended:', CLAIMANT_PYTHON_OBJECT)
    
    28.2.2017 21:09 zdenek2008 | skóre: 26
    Rozbalit Rozbalit vše Re: Python3 + TkInter: jak ulozit data z formulare?
    Diky, to funguje na 100%.
    27.2.2017 22:39 NN
    Rozbalit Rozbalit vše Re: Python3 + TkInter: jak ulozit data z formulare?
    entries = []
    
    for key, value in CLAIMANT_PYTHON_OBJECT.items():
       ...
       entries.append((key, entry))
    
    for ent in entries:
       print ent[1].get()
    
    28.2.2017 21:06 zdenek2008 | skóre: 26
    Rozbalit Rozbalit vše Re: Python3 + TkInter: jak ulozit data z formulare?
    Takhle?
    import logging
    from decimal import *
    import os
    import glob
    import pickle
    from tkinter import *
    import tkinter.messagebox as box
    
    CLAIMANT_PYTHON_OBJECT={
        'CLAIMANT_TITLE':'pan',
        'CLAIMANT_FIRST_NAME':'ferda',
        'CLAIMANT_SURNAME':'mravenec',
        'CLAIMANT_PLURAL':'', #s
        'CLAIMANT_PLURAL_CAPITALISED':'', #S
        'CLAIMANT_ADDRESS':'mraveniste pod smrkem',
        'CLAIMANT_POSTCODE_1111':'355',
        'CLAIMANT_POSTCODE_222':'09',
        'CLAIMANT_TELEPHONE_NUMBER':'158158158',
        'CLAIMANT_FAX_NUMBER':'',
        'CLAIMANT_EMAIL':'f.mravenec@mraveniste.cz',
        'CLAIMANT_REF':'',
        }
    
    print('dictionary:', CLAIMANT_PYTHON_OBJECT)
    
    window=Tk()
    window.title('The Claimant')
    frame=Frame(window)
    
    def show_entry_field():
       print(entry.get())
    
    entries = []
    
    for key, value in CLAIMANT_PYTHON_OBJECT.items():
        label=Label(frame, text=key)
        label.pack()
        entry=Entry(frame)
        entry.insert(0, value)
        entry.pack()
        entries.append((key, entry))
    
    button=Button(frame, text='Save', command=show_entry_field)
    button.pack()
    
    frame.pack(padx=10, pady=10)
    window.mainloop()
    
    for ent in entries:
       print (ent[1].get())
    
    print('dictionary amended:', CLAIMANT_PYTHON_OBJECT)
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.