2016-04-09 16 views
1

Tkinter'i öğreniyorum ve iki sorum var. Neden sözlükte öğeler doğru sırayla yazdırılır değildir do -Tkinter - Tıklatıldıysa onay kutularını işaretleyin ve tıklattıysa

1 [1 tek yorum bölümünde cevap]? "Kılavuz" kısmını Düğme'den silerseniz, sipariş edilmediklerini görebilirsiniz.

2 - Düğme neden gösterilmiyor? Her onaylanmış onay kutusu için "1" i basacak onay kutularının hemen altında bir düğme yapmak istiyorum.

This link referansımdı.

from Tkinter import * 

master = Tk() 

def read(): 
    print dict[mini].get() 

dict = {"first": 0, "second": 0, "third": 0} 


for mini in dict: 
    dict[mini] = Variable() 
    l = Checkbutton(master, text=mini, variable=dict[mini]) 
    l.grid(sticky=W, pady=4) 
    l.pack() 

Button(master, text='Show', command=read).grid(row=len(dict) + 1, sticky=W, pady=4) 

master.mainloop() 

Düzenleme: Yazım

+1

Sözlükler siparişlerini saklamıyor. ['Collections.OrderedDict'] 'a bir göz atmak isteyebilirsiniz (https://docs.python.org/2/library/collections.html#collections.OrderedDict). – zondo

+0

Bunu bilmiyordum, yardım için teşekkürler. Ancak, bunu yapmak için görünmüyordu. Burada neyi yanlış yaptım? http://pastebin.com/t7yMrCwu – firko

+1

Bir sözlük aktarılırken sözlük sırasız olacak ve 'OrderedDict' orijinal siparişin ne olduğunu bilmeyecek. OrderedDict ([('first', 0), ('second', 0)]) 'komutunu kullanmalısınız. – zondo

cevap

0

düğmesi görünmüyor pack deyimi de program hataları dışarı çünkü

Aşağıda benim kodudur. pack()'u sökün ve düğme gösterilir. Aynı kapsayıcıda grid ve pack'u birleştiremezsiniz. (yorumlarda Curly Joe'nun söylediği şeyden).

my_dict numaralı belgede bildirilen Tkinter değişkeni başlatılamaz ve atanmaz ve bu nedenle kullanılamaz; Değişken() nin sözlüğü asla değiştirilmez. bir mektup ve hangi bir sayı olduğu söylemek zor olabileceğinden

from Tkinter import * 
from collections import OrderedDict 

master = Tk() 

def read(): 
    try: 
     print my_dict[mini] 
    except KeyError: 
     pass 

my_dict = OrderedDict() 
my_dict["first"] = 0 
my_dict["second"] = 0 
my_dict["third"] = 0 


for mini in my_dict.keys(): 
    my_dict[mini] = Variable() 
    chkbtn = Checkbutton(master, text=mini, variable=my_dict[mini]) 
    chkbtn.grid(sticky=W, pady=4) 

Button(master, text='Show', command=read).grid(row=len(my_dict) + 1, sticky=W, pady=4) 

master.mainloop() 

Son olarak, tek bir karakter değişken adları i, l veya o kullanmayın; Ayrıca, variables veya method adlarınız için builtins adını kullanmayın.