2017-05-27 16 views
1

私はPython 2.7.8をWindows 1010で使用しています。これは本当に私を夢中にしています。私はそれをグリッド化するとすぐにデフォルトのあらかじめ選択された値をttk.Combobox()にします。これは私のコードです:pythonコンボボックスのデフォルトの電流

from Tkinter import * 
import ttk 

class open_review_frame(): 
    def __init__(self, original): 
     self.root = original     
     self.review_frame = LabelFrame(original, text="review", bd=1, height=400, width=500) 
     self.review_frame.grid(row=0, column=1, sticky=W + N, ipadx=10, ipady=10) 
     self.rowline = 0 

     self.review_type_val = StringVar() 
     self.review_type = ttk.Combobox(self.review_frame, width=12, textvariable=self.review_type_val, state='readonly') 
     self.review_type['values'] = ("a", "b", "c", "d") 
     self.review_type.current(0) 
     self.review_type.grid(row=self.rowline, column=2, sticky=W) 

class main_frame(): 
    def __init__(self, original): 
     self.root = original 

     review_frame_test = open_review_frame(self.root) 

if __name__ == "__main__": 
    root = Tk() 
    app = main_frame(original=root) 
    root.mainloop() 

空のコンボボックスを描画します。困惑しているのは、textvariable configで置換テキスト設定を置くと、それが完全に動作するということです。

from Tkinter import * 
import ttk 

class open_review_frame(): 
    def __init__(self, original): 
     """Constructor""" 
     self.root = original 

     self.review_frame = LabelFrame(original, text="review", bd=1, height=400, width=500) 
     self.review_frame.grid(row=0, column=1, sticky=W + N, ipadx=10, ipady=10) 
     self.rowline = 0 

     self.review_type_val = StringVar() 
     self.review_type = ttk.Combobox(self.review_frame, width=12, text= "", state='readonly') 
     #self.review_type = ttk.Combobox(self.review_frame, width=12, textvariable=self.review_type_val, state='readonly') 
     self.review_type['values'] = ("a", "b", "c", "d") 
     self.review_type.current(0) 
     self.review_type.grid(row=self.rowline, column=2, sticky=W) 

class main_frame(): 
    def __init__(self, original): 
     self.root = original 

     review_frame_test = open_review_frame(self.root) 

if __name__ == "__main__": 
    root = Tk() 
    app = main_frame(original=root) 
    root.mainloop() 

私はそれをなぜ理解できませんか?

答えて

1

これを行うことで達成しようとしている究極の目標は何かを推測することはできません。あなたの目的は唯一のコンボボックスを初期化する場合にもかかわらず、それを私たちが行く:

不可解何何が起こるか、私は置けば、それは実際には完全に

作品 textvariable設定とテキストの設定を置き換えることですコンボボックスがtextvariableオプションを使用して初期化に失敗しました。

この予期しない動作の説明は、StringVar()が適切に使用されていないためです。最初にself.review_type_valの値を設定する必要があります。

self.review_type['values'] = ("a", "b", "c", "d") 
self.review_type_val.set(self.review_type['values'][0]) 

その後、そのコンボボックスの値を取得するためにget()を使用します:あなたのケースでは、あなたが「A」に設定するので、これがしたいあなたの答えのための

self.review_type = ttk.Combobox(self.review_frame, width=12, textvariable=self.review_type_val.get(), state='readonly') 
+0

おかげで、私は解決問題 –

関連する問題