2015-10-06 61 views
0

我想代碼使用TabbedPanel類的程序。我將使用ScreenManager和導航按鈕導航每個選項卡中的不同屏幕。問題是沒有顯示出來。起初至少NavLayout已經出現,但現在看起來都是帶有各自名稱的標籤。如何讓導航按鈕和屏幕顯示在選項卡中。什麼都沒有出現在我的TabbedPanel在基維

ex1.kv 


<MainPanel>: 
    id: mp 
    usb_tab_wid: usb_tab 
    remote_tab_wid: remote_tab 
    sd_tab_wid: sd_tab 

    size_hint: 1,1 
    tab_width: 65 
    do_default_tab: False 
    tab_pos: 'top_right' 

    TabbedPanelItem: 
     id: usb_tab 
     text: 'Usb' 
     BoxLayout: 
      orientation: 'vertical' 
      UsbScreenManager: 
      NavLayout: 


    TabbedPanelItem: 
     id: remote_tab 
     text: 'Remote' 

    TabbedPanelItem: 
     id: sd_tab 
     text: 'SD' 





<NavLayout>: 
    id: grid1 
    spacing: 5,5 

    rows: 1 
    size_hint: 1, .2 
    LeftButton: 
     id: left_arrow_button 

     Image: 
      source: 'left_arrow_iconb.png' 
      center: left_arrow_button.center 
      size: grid1.width*.8, grid1.height*.8 

    BackButton: 
     id: back_button 

     Image: 
      source: 'back_iconb.png' 
      center: back_button.center 
      size: grid1.width*.8, grid1.height*.8 
    RightButton: 
     id: right_arrow_button 

     Image: 
      source: 'right_arrow_iconb.png' 
      center: right_arrow_button.center 
      size: grid1.width*.8, grid1.height*.8 

usb.kv 




<UsbScreenManager>: 
    id: usb_screen_manager 
    H2HScreen: 
     name: 'h2h' 
    V9validationScreen: 
     name: 'v9' 

<H2HScreen>: 
    name: 'h2h' 
    BoxLayout: 
     TestIcon: 
      source: 'h2h.png' 

<V9validationScreen>: 
    name: 'v9' 
    BoxLayout: 
     Label: 
      text: 'V9 tests' 

ex1.py 

import kivy 
kivy.require('1.9.0') 
import subprocess 
import csv 
from datetime import datetime 
import usb.core 
import usb.util 
import threading 
import time 
from functools import partial 

from kivy.app import App 
from kivy.uix.floatlayout import FloatLayout 
from kivy.uix.gridlayout import GridLayout 
from kivy.uix.behaviors import ButtonBehavior 
from kivy.uix.button import Button 
from kivy.uix.label import Label 
from kivy.properties import ObjectProperty, StringProperty, NumericProperty 
from kivy.clock import Clock 
from kivy.uix.image import Image 

from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition 
from kivy.lang import Builder 
from kivy.app import App 
from kivy.uix.tabbedpanel import TabbedPanel 
from kivy.uix.boxlayout import BoxLayout 






class MainPanel(TabbedPanel): 
    usb_tab_wid = ObjectProperty() 
    remote_tab_wid = ObjectProperty() 
    sd_tab_wid = ObjectProperty() 

    usbman = ObjectProperty(None) 

    def switch_to(self, header): 
     pass 
    def print_wd(self): 
     for widget in self.walk(): 
      print("[]->{}".format(widget, widget.id)) 

    def on_current_tab(self, b, c): 
     print(self.current_tab) 
     #return super(MainPanel, self).on_current_tab() 


    #print(usb_tab_wid) 
    pass 

class TestIcon(ButtonBehavior, Image): 
    pass 




class UsbScreenManager(ScreenManager): 
    pass 

class H2HScreen(Screen): 
    pass 


class V9validationScreen(Screen): 
    pass 


class RemoteScreenManager(ScreenManager): 
    pass 

class SDcardScreenManager(ScreenManager): 
    pass 




class NavLayout(GridLayout): 
    pass 

class LeftButton(Button): 
    sm = ObjectProperty() 
    mp = MainPanel() 


    ct= mp.current_tab 


    #print (ct) 

    pass 

class RightButton(Button): 
    sm = ObjectProperty() 
    panel = ObjectProperty() 
    pass 

class BackButton(Button): 
    sm = ObjectProperty() 
    panel = ObjectProperty() 

    def active_panel(): 
     #if current tab is __ then load corresponding screen manager 
     pass 
    pass 



class Sam1App(App): 
    def build(self): 

     return MainPanel() 

Builder.load_file("usb.kv") 

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

回答

1

我發現我覆蓋了tabbedPanel的switch_to方法,但沒有定義任何東西。所以TabbedPanel不知道要切換到什麼,所以它什麼都不顯示。