Я пытаюсь создать всплывающее окно полностью в Python и вызвать его из синтаксиса kivy, так как у меня была проблема с созданием нескольких всплывающих окон исключительно в kivy. Я пытаюсь напечатать текущий выбранный путь средства выбора файлов в поле метки над фреймом средства выбора файлов . Также ранее я мог изменить цвет фона всего всплывающего окна и прозрачность с помощью background_color и background_normal = '', но с тех пор по какой-то причине команды меняют цвет вокруг всплывающего окна вместо фактического фона всплывающего окна.
Python Код:
def chooseFilePopup(self):
#create popup
self.chosePop = Popup()
self.chosePop.title = '[b]Choose picture file'
self.chosePop.title_color = 1, 1, 1, 1
self.chosePop.title_size = 20
self.chosePop.title_align = 'center'
self.chosePop.auto_dismiss = False
self.chosePop.size_hint = (None, None)
self.chosePop.size = (640, 480)
#self.chosePop.background = '' #white background basis
#self.chosePop.background='GUI\bgclean.jpg'
#self.chosePop.background_color = (71/255, 118/255, 176/255, 0.75) #Blue, 80% transparency
#create popup-content
choseBox = BoxLayout()
choseBox.orientation = 'vertical'
choseBox.spacing = 6
choseBox.padding = 10, 10, 10, 10
#choseBox.background = ''
#choseBox.background_color = 0, 0, 0, 0.5
fichoo = FileChooserListView()
fichoo.dirselect = True
#fichoo.path = './'
#fichoo.on_selection = lambda *args: refresh_path(fichoo.selection))
#fichoo.on_submit = lambda *args: refresh_path(self.selection)
fichoo.on_selection = lambda *args: refresh_path(*args)
fichooPath = Label()
fichooPath.size_hint_y = 0.1
fichooPath.text = 'Current path: '
fichooPath.halign = 'left'
fichooPath.pos_hint = {'center_x': 0.1}
choseBoxLabel = Label()
choseBoxLabel.text = '[b]Warning![/b]\nMake sure to chose *.png file with resolution 640x480!'
choseBoxLabel.size_hint_y = 0.3
choseBoxLabel.font_size = '22'
choseBoxLabel.halign = 'center'
choseBoxLabel.color = 1, 1, 1, 1
choseBox.add_widget(choseBoxLabel)
choseBox.add_widget(fichooPath)
choseBox.add_widget(fichoo)
choseBoxInner = BoxLayout()
choseBoxInner.orientation = 'horizontal'
choseBoxInner.spacing = 10
choseBoxInner.padding = 10, 0, 10, 0
choseBoxInner.size_hint_y = 0.2
choseButtonLoad = Button()
choseButtonLoad.text = 'Load File'
choseButtonLoad.on_release = lambda *args: load_from_filechooser(fichoo.selection)
choseButtonCancel = Button()
choseButtonCancel.text = 'Cancel'
choseButtonCancel.on_release = lambda *args: self.chosePop.dismiss()
choseBox.add_widget(choseBoxInner)
choseBoxInner.add_widget(choseButtonCancel)
choseBoxInner.add_widget(choseButtonLoad)
def refresh_path(text):
print('miau')
#fichooPath.text = text
def load_from_filechooser(selection):
print(str(selection[0]))
if self.check():
trixel_demo(str(selection[0]), self.s, 0)
self.change_label('Image from file ' + str(selection[0] + ' displayed'))
self.ids.pictureBox.source = selection[0]
self.chosePop.dismiss()
self.chosePop.content = choseBox
self.chosePop.open()
Вызов из файла .kv:
Button:
on_release:
root.chooseFilePopup()