【发布时间】:2019-08-30 22:03:22
【问题描述】:
我想隐藏一个小部件并在单击按钮时显示另一个小部件。我通过将不透明度从 1 更改为 0 并从 0 更改为 1 来做到这一点。第一个小部件变得不可见,但第二个小部件没有显示。
这是我的 python 文件:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import NumericProperty
from kivy.config import Config
Config.set('graphics', 'width', '1920')
Config.set('graphics', 'height', '1080')
Config.set('graphics', 'fullscreen', 1)
class FirstScreen(Screen):
pass
class SecondScreen(Screen):
pass
class MyScreenManager(ScreenManager):
pass
class PasswordEntryWidget(BoxLayout):
def checkPswd(instance, pswd):
if (pswd == "123"):
instance.parent.opacity = 0
instance.parent.disabled = True
instance.parent.parent.ids.settingsWgt.opacity = 1.0
#print(instance.parent.parent.ids.settingsWgt.size_hint)
class SettingsEntryWidget(BoxLayout):
def checkPswd(instance, pswd):
if (pswd == "123"):
print ("It's OK!")
class MyApp(App):
def build(self):
return MyScreenManager()
if __name__ == '__main__':
MyApp().run()
这是我的.kv:
#:kivy 1.11.1
#:include loginWidgets.kv
<MyScreenManager>:
FirstScreen:
SecondScreen:
<FirstScreen>:
name: "FirstScreen"
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: 'img/background.png'
FloatLayout:
size: root.size
PasswordEntryWidget:
id: passwordWgt
size_hint: 0.2, 0.1
pos_hint: {'top': 0.35, 'right': 0.7}
SettingsEntryWidget:
id: settingsWgt
opacity: 0
disabled: True
size_hint: 0.2, 0.32
pos_hint: {'top': 0.35, 'right': 0.95}
<SecondScreen>:
name: "SecondScreen"
Label:
color: 1,1,1,1
font_size: 10
center_x: root.width/4
top: root.top - 50
text: "Lalalala"
这是 loginWidgets.kv:
#:kivy 1.11.1
<PasswordEntryWidget>:
orientation: "vertical"
spacing: 20
#padding: 50
TextInput:
id: adminPswdLine
multiline: False
password: True
size_hint_y: None
height: 30
font_size: self.height - 10
Button:
id: "takeAdminPswd"
size_hint_x: 0.5
pos_hint: {'center_x': 0.5}
on_press: root.checkPswd(adminPswdLine.text)
<SettingsEntryWidget>:
orientation: "vertical"
spacing: 20
#padding: 50
TextInput:
id: host
padding: [5, 2, 0, 5]
text: ""
multiline: False
password: False
size_hint_y: None
height: 30
font_size: self.height - 10
Button:
id: "takeSettings"
size_hint_x: 0.5
pos_hint: {'center_x': 0.5}
on_press: root.checkPswd(adminPswdLine.text)
正如我所说,第一部分效果很好。 PasswordWgt 完美隐藏,但 SettingsWgt 不可见。当我打印后它的不透明度 - 它给出 1,所以小部件必须是可见的,但它不是。我检查了 id 以及那里有哪些元素,并且需要的小部件与这个 id 一起存在。
是错误还是我做错了什么?
【问题讨论】:
标签: python-3.x kivy kivy-language