[英]How to clear kivy widgets?
我有一個情緒識別 kivy 應用程序,可以通過 2 個選項完成,上傳照片和整個相機視頻源。 我使用 MDDropdownMenu 讓用戶選擇。
下拉部分和上傳照片和加載視頻部分的代碼:
(編輯:我添加了我使用文件選擇器的部分,並在圖像部分添加了我的 .kv 文件)
self.menu_list = [
{
"viewclass":"OneLineListItem",
"text":"Upload Photo",
"on_release": lambda x = "Test": self.upload_picture(),
},
{
"viewclass": "OneLineListItem",
"text": "Open Camera",
"on_release": lambda x="Test": self.load_video(),
}
]
self.menu = MDDropdownMenu(
items = self.menu_list,
width_mult = 3
)
self.menu.caller = self.wm.get_screen('main_screen').ids.capture_emotion_button
self.menu.open()
def upload_picture(self):
filechooser.open_file(on_selection=self.selected)
self.photo = Image()
loc = self.wm.get_screen('main_screen').ids.display_pic_emotion
loc.clear_widgets()
return self.photo
def selected(self, selection):
if selection:
self.choosen_image = selection[0]
def load_video(self, *args):
self.image = Image()
self.wm.get_screen('main_screen').ids.display_pic_emotion.add_widget(self.image)
self.capture = cv2.VideoCapture(0)
Clock.schedule_interval(self.detect_emotion, 1.0 / 30.0)
return self.image
MDRoundFlatButton:
id: capture_emotion_button
text:"Capture Emotion"
pos_hint: {"center_x": .77, "center_y": .47}
line_color: 1, 1, 1, 1
on_press:
app.choice_dropdown()
MDBoxLayout:
orientation: 'vertical'
md_bg_color: app.theme_cls.bg_normal
radius: [40, 0, 0, 0]
MDBoxLayout:
padding: [10, 10, 10, 10]
adaptive_height: True
MDLabel:
halign: 'center'
text: "Camera Viewer"
font_size: 15
bold: True
pos_hint: {"center_7": .70}
MDBoxLayout:
id: display_pic_emotion
padding: [10, 10, 10, 10]
Image:
id: emoimage
但是,如果您注意到,上傳照片和加載視頻實用程序都在同一空間。 這意味着當用戶單擊上傳照片時,照片將出現在該框中。 當使用再次單擊下拉菜單但選擇打開相機時,我想清除該框,以便現在可以在框中顯示視頻源。 但是我現在擁有的是,當我多次單擊下拉菜單中的選項時,它只會為照片/視頻提要添加另一個框。 每次單擊下拉菜單中的選項時,有沒有辦法清除空間?
嘗試添加對clear_widgets()
的調用。 改變:
def upload_picture(self):
self.photo = Image()
self.wm.get_screen('main_screen').ids.display_pic_emotion.add_widget(self.photo)
return self.photo
至:
def upload_picture(self):
self.photo = Image()
loc = self.wm.get_screen('main_screen').ids.display_pic_emotion
loc.clear_widgets()
loc.add_widget(self.photo)
Ans 與load_video()
類似。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.