0
我想在kivy中實現自定義可關閉選項卡標題。Kivy中的自定義可關閉選項卡
我所做的是將一個類:TabbedPanelHeader對象與一個自定義類:CloseButton對象結合在一起。這兩個小部件都在類中:BoxLayout,並排。
但是,一旦我將此添加到類:TabbedPanel對象,什麼也沒有顯示出來.. 我不知道如何前進,將非常感謝所有的幫助!
以下是代碼的相關部分。
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.graphics import *
from kivy.uix.tabbedpanel import TabbedPanelHeader
class CloseButton(ButtonBehavior, Image):
def __init__(self, **kwargs):
super(CloseButton, self).__init__(**kwargs)
self.source = 'atlas://data/images/defaulttheme/close'
self.size_hint_x = .2
def on_press(self):
self.source = 'atlas://data/images/defaulttheme/checkbox_radio_off'
def on_release(self):
self.source = 'atlas://data/images/defaulttheme/checkbox_radio_off'
## do the actual closing of the tab
class ClosableTabHeader(BoxLayout):
def __init__(self, **kwargs):
super(ClosableTabHeader, self).__init__(**kwargs)
self.size = (100, 30)
self.size_hint = (None, None)
self.canvas.before.add(Color(.25, .25, .25))
self.canvas.before.add(Rectangle(size=(105, 30)))
self.add_widget(TabbedPanelHeader(background_color=(.65, .65, .65, 0), text='testing'))
self.add_widget(CloseButton())
if __name__ == '__main__':
from kivy.app import App
class TestApp(App):
def build(self):
return ClosableTabHeader()
TestApp().run()
反正它可以在Python,而不是KV寫語言。我鬆散地基於你與我聯繫的那個腳本的代碼。但是,我還沒有完全理解KV lang,因此爲什麼我的代碼不能完全工作=) – Icee
確定您可以在kv中執行的所有操作都可以在python中完成。但是,這是更多的工作和kv真的很容易。值得學習它。我不想將它轉移到python,我甚至不確定我是否可以。如果我的問題幫助或解決了您的問題,請立即投訴或接受。 – PalimPalim
沒問題。看起來像它回到我的繪圖板。不過謝謝。 – Icee