.py文件
class WindowManager(ScreenManager):
pass
class HomeScreen(Screen):
pass
class MyWorkouts(Screen):
pass
class RecommendedWorkouts(Screen):
pass
class AddWorkouts(Screen):
pass
class CreateNewWorkout(Screen):
pass
class AddNewGoal(Screen):
pass
class Workout(MDApp):
dialog = 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()
HomeScreen().add_widget(progressbar)
.kv文件
MDToolbar:
title: 'App Attack'
type: 'top'
right_action_items: [['plus', lambda x: app.AddNewGoal_Dialog()]]
elevation: 10
因此,当我按工具栏上的正确操作项时,它将创建对话框。然后,我想要它,所以当我按下对话框上的CREATE Raised按钮时,它将向主屏幕添加一个小部件(进度条)。我没有收到错误代码。而是,当释放按钮时,什么也没有发生。有人可以帮忙吗?
答案 0 :(得分:0)
您的addNewGoal()
方法中的行:
HomeScreen().add_widget(progressbar)
创建一个HomeScreen
的新实例,并将progressbar
添加到该实例。不幸的是,HomeScreen
的实例不是您的GUI中的那个实例。您需要获得对GUI中HomeScreen
实例的引用。如果您发布的kv
文件是正确的,则没有HomeScreen
的实例。但是,我怀疑您没有提供完整的kv
文件。
如果您的addNewGoal()
方法是您的App
的方法(也无法从您发布的代码中清除),则addNewGoal()
中的这一行应类似于:
self.root.get_screen('homescreen').add_widget(progressbar)
假定GUI的根是ScreenManager
,而name
的{{1}}是HomeScreen
。