Python Kivy-如果满足条件,如何更改每个文本输入的颜色
我正在尝试在kivy中创建一些主题。我的程序目前有4个类/屏幕。我已经设法能够改变所有屏幕的背景颜色,如果条件得到满足。我试着改变所有文本输入的颜色,因为它们是白色的,它们是黑色的。这是到目前为止我的代码 Python:Python Kivy-如果满足条件,如何更改每个文本输入的颜色,python,kivy,Python,Kivy,我正在尝试在kivy中创建一些主题。我的程序目前有4个类/屏幕。我已经设法能够改变所有屏幕的背景颜色,如果条件得到满足。我试着改变所有文本输入的颜色,因为它们是白色的,它们是黑色的。这是到目前为止我的代码 Python: from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.screenmanager import ScreenManager, Screen from kivy.clock
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.clock import *
from kivy.core.window import Window
from kivy.uix.textinput import TextInput
class WeatherRoot(ScreenManager, BoxLayout):
pass
class RegisterPage(Screen, BoxLayout):
pass
class WeatherApp(App):
pass
def iii(time):
print("h")
x = 1
if x == 1:
Window.clearcolor = (1, 1, 1, 0)
TextInput.background_color = (1,1,1,0)
pass
if __name__ == "__main__":
Clock.schedule_once(iii)
WeatherApp().run()
基维:
WeatherRoot:
:
注册页面:
:
盒子布局:
填充:[100,50,100,50]
文本输入:
字体大小:30
文本输入:
字体大小:30
更改文本输入颜色的代码无效
背景是白色的,但文本输入并不像您看到的那样是黑色的
如果满足条件,我如何使用python代码更改TextInput和properties小部件的颜色(例如,所有标签的文本颜色)
提前谢谢
注意-它不适用于前景颜色或任何类似的颜色设置。似乎对象/实例和类的概念没有区别。通过使用
TextInput.background\u color=(1,1,1,0)
可以添加或修改TextInput类的“background\u color”属性,而不是基于TextInput类创建的对象/实例的属性
如果要修改TextInputs的属性(也称为基于TextInput类创建的实例/对象),则必须通过父对象使用kivy方法访问这些对象:
def iii(时间):
x=1
如果x==1:
Window.clearcolor=(1,1,1,0)
root=App.get_running_App().root#WeatherRoot实例
screen=root.screens[0]#注册表页实例
box_layout=screen.children[0]#BoxLayout实例
对于框_布局中的子项。子项:#框_布局中的子项
如果isinstance(子项,TextInput):#验证子项是否为TextInput
child.background_color=(1,1,1,0)
我想您已经推断出,在Window中,它的行为类似于TextInput,但它们并不相同,因为第一个是WindowBase类的实例,它与第二个不同。非常感谢。假设这也适用于其他小部件是否正确?例如,使用按钮或下拉菜单?@JeffBanks这取决于每种情况,我唯一能告诉你的是:1)回顾你的OOP概念(如果你没有),2)回顾kivy文档,3)回顾kivy官方教程。此外,如果我想在多个屏幕/类中的输入框中实现这一点,我应该怎么做?我可以在root.screens上迭代吗?@JeffBanks是的,我建议你回顾一下我在上面指出的内容,因为你不知道我想你有数千个问题,但不幸的是,SO的评论不是正确的地方。@JeffBanks最后,如果答案对你有帮助,请不要忘记将其标记为正确,如果你不知道怎么做,那么检查
WeatherRoot:
<WeatherRoot>:
RegisterPage:
<RegisterPage>:
BoxLayout:
padding: [100, 50, 100, 50]
TextInput:
font_size: 30
TextInput:
font_size: 30