【发布时间】:2017-02-21 17:12:26
【问题描述】:
我想更改图像的颜色。此图像放置在屏幕管理器的屏幕上的按钮上。当我按下按钮时,会出现一个弹出窗口来选择一种颜色。这个颜色现在应该保存在一个全局变量中,并设置为(以前的白色)图像的颜色。我的问题是,我无法从弹出窗口的类中访问图像的属性。
.kv的相关部分:
<HomeScreen>:
sm: sm
name: 'ScreenManager'
BoxLayout:
orientation: 'vertical'
rows: 2
ActionBar:
[...]
ScreenManager:
id: sm
size_hint_y: .935
Screen1:
name: "screen_1"
Screen2:
name: "screen_2"
Screen3:
name: "screen_3"
[...]
<Popup_F>:
size_hint: .75, .5
auto_dismiss: True
BoxLayout
orientation: 'horizontal'
padding: 10, 0
BoxLayout
orientation: 'vertical'
Slider:
id: on_value_slider_r
on_value:
root.on_value_slider_rgb()
Slider:
id: on_value_slider_g
on_value:
root.on_value_slider_rgb()
Slider:
id: on_value_slider_b
on_value:
root.on_value_slider_rgb()
还有.py:
class Screen1(Screen):
[...]
def colorchanger(self):
farbenw = Popup_F()
farbenw.open()
def colorchangern(self):
# next line should change the color (as work around) of the Image but has no effect:
self.ids.image_color_change.color = (r_R1, g_R1, b_R1, 1)
class Farbe(Popup):
def on_value_slider_rgb(self):
global r_R1
global g_R1
global b_R1
r_R1 = self.ids.on_value_slider_r.value
g_R1 = self.ids.on_value_slider_g.value
b_R1 = self.ids.on_value_slider_b.value
# next line does cause an error
self.ids.image_color_change.color = (r_R1, g_R1, b_R1, 1)
Screen1().colorchangern()
我得到的错误:
AttributeError: 'super' 对象没有属性 '__ getattr __'
它只出现在标记线中...我不知道如何才能在没有错误的情况下实现这一点!我希望我在第一个问题上所做的一切都是正确的!
谢谢!
【问题讨论】:
标签: python python-3.x kivy kivy-language