python - KIVY:为什么手风琴不能正确加载标题文本可见?
问题描述
出于某种原因,当我运行代码时,我的手风琴标题是黑色的并且标题文本不可见,当将它与手风琴是深灰色和白色文本的示例代码进行比较时。当我单击它时,手风琴的其余部分工作正常,它会展开和关闭。唯一的问题是手风琴标题不能正常工作。
*.py
#imported from kivy framework
from kivy.app import App
from kivymd.app import MDApp
from kivy.app import App
from kivy.uix.label import Label
from datetime import datetime
from datetime import timedelta
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.image import Image
import dictionaryData
from kivy.lang import Builder
from kivy.base import runTouchApp
import os
from kivy.uix.button import Button
from kivy.uix.accordion import Accordion, AccordionItem
class Main_Screen(Screen):
pass
class Dictionary_Screen(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
layout = BoxLayout(orientation='vertical') # instantiate BoxLayout
self.add_widget(layout) # add BoxLayout to screen
btn2 = Button(
text='change screen',
size_hint=(.5, .05),
)
btn2.bind(on_press=self.changer)
layout.add_widget(btn2) # add Button to BoxLayout
title = ["Title 1", "Title 2", "Title 3", "Title 4", "Title 5"]
accordion = Accordion(orientation='vertical') # instantiate Accordion
layout.add_widget(accordion) # add Accordion to BoxLayout
for x in range(2):
item = AccordionItem(title="Cheese",background_normal= "LogoFF.png")
item.add_widget(Label(text='Very big content\n' * 2))
accordion.add_widget(item) # add AccordionItem to Accordion
def changer(self,*args):
print("ww")
#class for all screens
class ScreenManagement(ScreenManager):
pass
class MainApp(MDApp):
def build(self):
# declaring time from python, and making it refresh every second
self.now = datetime.now()
Clock.schedule_interval(self.update_clock, 1)
def update_clock(self, *args):
self.now = self.now + timedelta(seconds=1)
self.root.get_screen("Main_Screen").ids["CurrentTime"].text = self.now.strftime("%H:%M:%S")
MainApp().run()
*.kv
#:kivy 1.0
#:import hex kivy.utils.get_color_from_hex
#styles that will apply to all intences for each tag
<MDRaisedButton>:
font_size:18
<Label>:
color: 0,0,0,1
#declaring screen managers and printing them in this order
ScreenManagement:
Main_Screen:
name: "Main_Screen"
Dictionary_Screen:
name: "Dictionary_Screen"
<Main_Screen>:
FloatLayout:
spacing: 10
canvas.before:
Color:
rgba: hex('#eff3fa')
Rectangle:
size: self.size
pos: self.pos
#Navbar
MDToolbar:
id: fb
pos_hint: {'center_x': 0.5, 'top':1.0}
size_hint_y:None
height: 50
title: "Virtual Assistant"
md_bg_color: hex('#132843')
Label:
id: CurrentTime
font_size:18
size_hint_x: .1
color: (1,1,1,1)
BoxLayout:
orientation: 'vertical'
spacing: 10
padding: 50
canvas.before:
Color:
rgba: hex('#000')
Rectangle:
size: self.size
pos: self.pos
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
size_hint: 0.5, 0.5
Button:
text: "Dictionary"
on_release:
app.root.current = "Dictionary_Screen"
<Dictionary_Screen>:
Label:
id: box
color: (1,0,1,1)
有没有办法解决这个问题?
解决方案
AccordionItemTitle
是 a Label
,您的规则<Label>:
将所有文本全部设置Labels
为黑色。您可以通过删除以下行来解决问题:
<Label>:
color: 0,0,0,1
从您的kv
文件中。为kv
常用的Widget
. 更好的方法是创建一个自定义类,例如:
<BlackLabel@Label>:
color: 0,0,0,1
并BlackLabel
在你想要这样的地方使用Label
。
推荐阅读
- python - 根据特定值重命名多个熊猫 DataFrame 值
- electron - macOS 的 openVPN 连接应用程序 - 找不到开源
- c# - WCF HTTP 响应标头仅通过 SoapUI 可见
- javascript - 将数据从 Jquery 发送到 Django html 模板
- matrix - 在 Lisp 中的另一个矩阵中放置一个矩阵
- python - 处理字典列表中的重复项
- flutter - Dart Uri Api - 请求通过将 HTML 代码提供给问号来更改链接
- docker - 如何从 docker 容器(在服务器 1 中运行)连接数据库(服务器 2 中的 mongodb)
- javascript - 使用 GSAP 进行 CSS 和 JS 转换
- x86 - 我怎么知道我在某处有堆栈段错误?