我最近发布了关于向屏幕添加进度条小部件的信息,但由于我的 MDBottomNavigation 包含在一个屏幕中,每次我切换到底部导航中的不同项目时,进度条都会保持存在。所以,我想要做的是将进度条添加到MDBottomNavigation 项目中的一个而不是其他 2 个。这是我的代码:.py文件class WindowManager(ScreenManager): pass class HomeScreen(Screen): passclass MyWorkouts(Screen): passclass RecommendedWorkouts(Screen): passclass AddWorkouts(Screen): passclass CreateNewWorkout(Screen): passclass AddNewGoal(Screen): passclass Goals(Screen): passclass Workout(MDApp): dialog = None PB = ObjectProperty(None)def build(self): return def AddNewGoal_Dialog(self): if not self.dialog: self.dialog = MDDialog( size_hint_x = 0.8, size_hint_y = 1, pos_hint = {'center_x': .5, 'center_y': .5}, radius = [10, 10, 10, 10], title = 'Add New Goal', auto_dismiss = False, type = 'custom', content_cls = AddNewGoal(), buttons = [ MDFlatButton( text = 'CANCEL', text_color = self.theme_cls.primary_color, on_release = self.closeDialog), MDRaisedButton( text = 'CREATE', text_color = self.theme_cls.primary_color, on_release = self.addNewGoal) ], ) self.dialog.open()def addNewGoal(self, inst): progressbar = ProgressBar( value = 50, max = 100 ) self.root.ids.GoalsBN.add_widget(progressbar) self.dialog.dismiss()是需要进行编辑的地方。我知道这条线不对,我只是不确定如何调用我给定 id: 'GoalsBN'的 MDBottomNavigationItem 。帮助将不胜感激!
1 回答
慕森卡
TA贡献1806条经验 获得超8个赞
问题
在 kv 文件中,id: 'GoalsBN'被定义为一个字符串。
id: 'GoalsBN'在 HomeScreen 中定义但未在 ScreenManager, WindowManager:中定义。
解决方案
在 kv 文件中,id:不是字符串。因此,将id: 'GoalsBN'替换为id: GoalsBN
在 kv 文件中,添加id: homeScreen并在 Python 脚本中,将ids.homeScreen添加到self.root.ids.GoalsBN.add_widget(progressbar)
片段
kv文件
WindowManager: transition: FadeTransition(duration = 1) HomeScreen: id: homeScreen MyWorkouts: ... MDBottomNavigationItem: text: 'Goals' id: GoalsBN ...
main.py
def addNewGoal(self, inst): progressbar = ProgressBar( value=50, max=100 ) self.root.ids.homeScreen.ids.GoalsBN.add_widget(progressbar) self.dialog.dismiss()
输出
添加回答
举报
0/150
提交
取消