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í
×
včera 21:11 | Nová verze

Po půl roce vývoje od vydání verze 8.0.0 byla vydána verze 9.0.0 překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, Extra Clang Tools, LLD a Libc++. Vývojáři zdůrazňují podporu "asm goto", díky které lze pomocí Clangu přeložit například Linux pro x86_64 (CONFIG_JUMP_LABEL=y).

Ladislav Hagara | Komentářů: 3
včera 14:00 | Nová verze

Bylo vydáno Eclipse IDE 2019-09 aneb Eclipse 4.13. Představení novinek na YouTube. Vydána byla také nová verze 7 online IDE Eclipse Che.

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

Byla vydána verze 24.0 svobodného softwaru OBS Studio (Open Broadcaster Software, Wikipedie) určeného pro streamování a nahrávání obrazovky počítače. Přehled novinek na GitHubu nebo pomocí krátkých videí na Twitteru.

Ladislav Hagara | Komentářů: 3
včera 11:00 | Komunita

Microsoft představil a pod licencí SIL Open Font License (OFL) na GitHubu zveřejnil font Cascadia Code. Font je určen především pro zobrazování textu v emulátorech terminálu a vývojových prostředích (Přehled fontů s pevnou šířkou).

Ladislav Hagara | Komentářů: 12
18.9. 21:11 | Zajímavý software

Souborový systém exFAT se běžně používá na paměťových médiích jako karty SDXC, ale z licenčních důvodů jej nebylo možné začlenit do Linuxu, ačkoliv v roce 2013 unikl ovladač od Samsungu, jak shrnuje článek na Linux Weekly News. Park Ju Hyung nedávno vzal novější verzi ovladače od Samsungu a založil na ní vlastní projekt exfat-linux, který je k dispozici uživatelům.

Fluttershy, yay! | Komentářů: 9
18.9. 05:55 | Pozvánky

Dnes a zítra pořádá Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) ve spolupráci se studentským portálem Security Outlines konferenci CyberCon Brno 2019. Sledovat ji lze také online.

Ladislav Hagara | Komentářů: 0
18.9. 04:44 | Nová verze

Byla vydána Java 13 / JDK 13. Nových vlastností (JEP - JDK Enhancement Proposal) je 5. Nová Java / JDK vychází každých 6 měsíců.

Ladislav Hagara | Komentářů: 2
18.9. 03:33 | Komunita

Mozilla.cz informuje (en), že Mozilla postupně zrychlí pravidelné vydávaní nových verzí Firefoxu na 4 týdny. Aktuálně jsou vydávány nové verze Firefoxu každých 6 až 8 týdnů.

Ladislav Hagara | Komentářů: 13
17.9. 18:44 | Nová verze

MojeFedora.cz informuje (en) o vydání betaverze Fedory 31, tj. dalšího mezníku na cestě k plánovanému vydání Fedora 31 na konci října. K dispozici je v edicích Workstation a Server. Můžete také vyzkoušet jeden ze spinů, labů nebo verzi pro ARM.

Ladislav Hagara | Komentářů: 0
17.9. 17:00 | Nová verze

Byl vydán CentOS Linux 7 (1908) vycházející z Red Hat Enterprise Linuxu 7.7. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 1
Kdy jste naposledy viděli počítač s připojeným běžícím CRT monitorem?
 (20%)
 (4%)
 (10%)
 (38%)
 (27%)
 (2%)
Celkem 178 hlasů
 Komentářů: 18, poslední včera 09:03
Rozcestník

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

27.2.2017 21:15 zdenek2008 | skóre: 22
Python3 + TkInter: jak ulozit data z formulare?
Přečteno: 200×
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: 22
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: 22
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.