2016-05-24 10 views
0

私はTabbedPanelItemをPythonコードで動的に構築しています。以下のコードを参照してください。私は3つの質問があります:動的に構築されたTabbedPaneltemに切り替える方法は?

  1. どのように私は最初のタブを有効にすることができますか?開始後にコンテンツが表示されないのは ですが、タブをクリックした場合のみです。
  2. どのように私はPythonの部分からタブに切り替えることができますか?
  3. TabbedPanelItemのテキスト(つまり数字)を水平に読むように回転させるにはどうすればよいですか?

ザ・Pythonコード:

from kivy.lang import Builder 
from kivy.app import App 
from kivy.uix.floatlayout import FloatLayout 
from kivy.properties import ObjectProperty 
import string 

class RootWidget(FloatLayout): 

    tab_panel = ObjectProperty(None) 
    tab_1 = ObjectProperty(None) 

    def init_root(self): 
     panel = self.ids.tab_panel 
     tpitem = string.Template(''' 
TabbedPanelItem: 
    id: '$tab_id' 
    background_normal: '$imgn' 
    background_down: '$imgd' 
    BoxLayout: 
     Label: 
      text: '$label_txt' 
      font_size: 14 
      color: 1,0,0,1 
      ''') 

     for idx in range (5, 0, -1): 
      event = str(idx) 
      tab_id = 'tab_' + event 
      imgn = './images/tn-' + event + '.png' 
      imgd = './images/td-' + event + '.png' 
      label_txt = tab_id + " intentionally left blank" 
      next_tab = tpitem.substitute(vars()) 
      tab = Builder.load_string(next_tab) 
      panel.add_widget(tab) 

     #self.tab_panel.switch_to(self.tab_1) 

class addtabApp(App): 
    def build(self): 
     homeWin = RootWidget() 
     homeWin.init_root() 
     return homeWin 

if __name__ == '__main__': 
    addtabApp().run() 

KVファイル:

<RootWidget>: 
    tab_panel:tab_panel 
    #tab_1:tab_1 

    TabbedPanel: 
     id: tab_panel 
     do_default_tab: False 
     tab_pos: 'left_top' 

答えて

0

1)default_tab - この1つはオブジェクトを望んでいる、そうなるように1どちらかKV内id、または<class>.ids.<tab id>を取得あなたはそのプロパティでそれを使うことができます。または<class>.childrenまで取得してください。最後の項目は最初のタブである必要があります。例:

TabbedPanel: 
    default_tab: deflt 

    TabbedPanelItem: 
     text: '1' 
     Button: 

    TabbedPanelItem: 
     text: '2' 

    TabbedPanelItem: 
     id: deflt 
     text: '3' 
     Label: 
      text: 'the default one' 

2)switch_to - それは切り替える必要するオブジェクトを望んでいる機能。再びidまたはchildren

your_tab_panel.switch_to(<some id from kv or object>) 

3)How to position text horizontally in vertical tabs?

+1

こんにちはKeyWeeUsr、答えに感謝でそれを行います。 Re。 3番目の質問ですが、原点にあるラベルを時計回りに90度回転させて画像を使用することにしました。私はこれを上記のコードに追加しました。 –

関連する問題