[Tutor PyCZ] dají se nějak vložit výběry z OptionMenu jako položky do seznamu?
Roman Miklos
RMiklos na pss.sk
Úterý Říjen 31 17:53:19 CET 2006
Funkcia pouzita v command OptionMenu musi mat zrejme vzdy definovany
jeden argument aj ked ho nepotrebujes.
Za 1.argumnent dosadi polozku vybranu z OptionMenu, teda vlastne
promenna.get()
----------------------------------- code
-----------------------------------------
# -*- coding: cp1250 -*-
from Tkinter import *
def foo(bar):
print "bar=%s" % bar
print u"hodnota je:", promenna.get()
seznam[0]=promenna.get()
print seznam
okno = Tk()
seznam=['','','','']
promenna = StringVar(okno) # tkinterovská proměnná
promenna.set(u"jedna") # počáteční hodnota
option = OptionMenu(okno, promenna, u"jedna", u"dva", u"tři", u"čtyři",
command=foo)
option.pack()
mainloop()
----------------------------------- code
-----------------------------------------
Zistil som, ze ked jej odovzdam este 2.argument t.j. takto
def foo(bar, j)
robi to problemy.
Takze skus ju oklamat tak, ze index j jej odovzdas pomimo ako globalnu
premennu.
Tu je demo:
----------------------------------- code
-----------------------------------------
# -*- coding: cp1250 -*-
from Tkinter import *
class MyClass:
def __init__(self):
self.seznam=['','','','']
def foo(self, bar):
print self
print u"hodnota je:", self.promenna.get()
self.seznam[self.j] = self.promenna.get()
print self.seznam
def run(self):
okno = Tk()
self.promenna = StringVar(okno) # tkinterovská proměnná
self.promenna.set(u"dva") # počáteční hodnota
self.j=1
option = OptionMenu(okno, self.promenna, u"jedna", u"dva", u"tři",
command=self.foo)
option.pack()
okno.mainloop()
if __name__ == "__main__":
mc = MyClass()
mc.run()
print mc.seznam
----------------------------------- code
-----------------------------------------
Zamerne som pouzil OO. Tkinter je OO a tym ze robis s objektami sa vyhnes
mnohym komplikaciam
index j listu seznam tu je atribut objektu, teda akasi globalna premenna
instancie mc triedy MyClass
Teraz ked budes chciet ukladat do 0.polozky zoznamu urobis:
self.j=0
option = OptionMenu(okno, self.promenna, u"jedna", u"dva", u"tři",
command=self.foo)
ked do 1. polozky:
self.j=1
option = OptionMenu(okno, self.promenna, u"jedna", u"dva", u"tři",
command=self.foo)
...
atd
"Jan Šimůnek" <jsim na med.muni.cz>
Sent by: tutor-bounces na py.cz
31.10.2006 15:49
Please respond to
Konference Tutor portalu PyCZ <tutor na py.cz>
To
tutor na py.cz
cc
Subject
[Tutor PyCZ] dají se nějak vložit výběry z OptionMenu jako položky do
seznamu?
Omlouvám se převelice, ale nepomohlo to
funkce ok:
def ok(hodnota):
u"Volaná funkce při změně hodnoty udělátka 'option'"
print u"hodnota je:", promenna.get(), hodnota
seznam.append(promenna.get())
print seznam
nějak záhadně (protože ji nejde volat s argumentem - nebo více argumenty)
převezme vybranou hodnotu z OptionMenu a přidá ji na konec seznamu
Já bych potřeboval, aby byla změněna určitá konkrétní položka seznamu.
Dá se napsat:
seznam[1]=promenna.get()
ale nedokážu přijít na to, jak funkci ok předat ještě další hodnotu, aby
ji
jedno udělátko volalo, že chce uložit hodnotu na seznam[0], další na
seznam[1] atd. Případně jak z udělátka změnit hodnotu nějaké globální
proměnné (coby umístění v seznamu), kterou by si funkce ok nabrala
příkazem
global.
Děkuji
Jan Šimůnek
_______________________________________________
Tutor mailing list
Tutor na py.cz
http://www.py.cz/mailman/listinfo/tutor
Mgr. Ing. Roman MIKLÓŠ
Prvá stavebná sporiteľňa a.s.
Bajkalská 30, P. O. Box 48
829 48 Bratislava 25
Tel.: +421/ 2 / 582 31 174
Fax: +421/ 2 / 582 31 109
Další informace o konferenci Tutor