ããŒã¿å ¥åãã©ãŒã
InputBoxã®é¡äŒŒç©ãäœæããæãåçŽãªå¿ èŠæ§ããå§ãŸããŸãããããã¹ãã®å ¥åãã£ãŒã«ããæã€ãŠã£ã³ããŠã§ãã ãã®ãåçŽãªããŒãºãã®çµæãšããŠãUIãã©ãŒã ãäœæããããã®ããã€ãã®äŸ¿å©ãªã°ããºãšåºæ¬ã¯ã©ã¹ãçãŸããŸããã
ã¯ã©ã¹XTextInput
åãInputBoxã ããã§ã¯ãã¹ãŠãç°¡åã§ã-kivy.uix.textinput.TextInputãåºç€ãšããŠäœ¿çšããããããã¢ãããŠã£ã³ããŠã«ãã³ã°ã¢ããããŸããã ãã®æ¹æ³ãé©çšããŸãïŒ
XTextInput(title=' ?', text=' ?')
çµæïŒ
ã·ã³ãã«ã å¿ èŠã«å¿ããŠ-1è¡ã§ã textãã©ã¡ãŒã¿ãŒã䜿çšããŠãå ¥åãã£ãŒã«ãã®æ¢å®å€ãèšå®ããŸãããã£ãŒã«ãã空ã«ããå¿ èŠãããå Žåã¯ããã®ãã©ã¡ãŒã¿ãŒãé€å€ããŸãã
ãšããã§ãå ¥åãã£ãŒã«ãã§ãEnterããæŒããšããŠã£ã³ããŠã¯ãOKããã¿ã³ãæŒãããšèªèããŸãã
å ¥åããããŒã¿ãååŸããæ¹æ³ã¯ïŒ éåžžã«ç°¡å-次ã®ãŠã£ã³ããŠãéãããã³ãã©ãŒãäœæããŸãã
def my_callback(instance): # "Cancel" if not instance.is_canceled(): # search = instance.get_value() print(u': %s' % search) XTextInput(title=' ?', text=' ?', on_dismiss=my_callback)
.get_valueïŒïŒã¡ãœããã¯ãUIãã©ãŒã ã«é 眮ãããèŠçŽ ã®å€ãè¿ããŸãã詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
[ ãã£ã³ã»ã« ]ãã¿ã³ãã¯ãªãã¯ãããå Žåã .is_canceledïŒïŒã¡ãœããã¯Trueãè¿ããŸãã 詳现ã¯ãã¡ããã芧ãã ãã ã
æšæºãã¿ã³ãç¬èªã®ãã®ã«çœ®ãæããæ¹æ³- ãã¡ããã芧ãã ãã ã
æåŸã®ã³ãŒã-å°ãããŠãŒã¶ãŒãã¬ã³ããªãŒããè¿œå ããŸãïŒç©ºã®ãã£ãŒã«ãã®
def my_callback(instance): # "Cancel" if not instance.is_canceled(): # search = instance.get_value() # if not search: # XError(text=' , ') # return True print(u': %s' % search) XTextInput(title=' ?', on_dismiss=my_callback)
ã³ãŒãå ã®å Žæã«æ³šæããŠãã ããã
# return True
ãŠã£ã³ããŠãéããã€ãã³ãããã£ã³ã»ã«ããã«ã¯ã Trueãè¿ãå¿ èŠããããŸã ã ããŸã䟿å©ã§ã¯ãããŸããããããã¯ãŸãã«ã¹ãŒããŒã¯ã©ã¹ãæåŸ ãããã®ã§ãã
ã¯ã©ã¹XNotes
è€æ°è¡ããã¹ããå ¥åãããã
XNotes(title='', text='\n ...\n ')
çµæïŒ
XNotesã¯XTextInputã®åå«ã§ããã XTextInputã«ã€ããŠäžèšã§èª¬æãããã®ã¯ãã¹ãŠã XNotesã«å¯ŸããŠæå¹ã§ãã
- å ¥åãã£ãŒã«ãã§ãEnterããæŒããšãæ°ããè¡ã«ãžã£ã³ãããŸãã
- textãã©ã¡ãŒã¿ãŒã¯å ¥åãšããŠæååãæ³å®ããŠããŸãã ã\ nããè¿œå ããããšã§è€æ°è¡ã«ãªããŸãã
XSliderã¯ã©ã¹
kivy.uix.slider.SliderãæèŒãããããã¢ããã ãã®æ¹æ³ã䜿çšããŸãã
XSlider(title='', buttons=[''])
ããã©ã«ãã§ã¯ãã¹ã©ã€ããŒã¯[0ïŒ æå° ïŒã1ïŒ æ倧 ïŒ]ã®ç¯å²ã§ç§»åããçŸåšã®äœçœ®ïŒ å€ ïŒã¯0.5ã«ãªããŸãã å¿ èŠã«å¿ããŠããããã®ãã©ã¡ãŒã¿ãŒã¯ç°¡åã«ä»ã®ãã®ã«çœ®ãæããããŸãã
XSlider(title=', dB', buttons=[''], min=-100, max=12, value=-10)
çµæïŒ
XFormã®åå«ãšåæ§ã«ããã®ã¯ã©ã¹ã§ã¯.get_valueïŒïŒã¡ãœããã䜿çšã§ããŸãããã®ã¡ãœããã¯ããŠã£ã³ããŠã¯ããŒãºã€ãã³ããã³ãã©ãŒã§äœ¿çšã§ããŸãã ããã«ããã®ã¯ã©ã¹ã䜿çšãããšãon_changeã€ãã³ãã䜿çšããŠãã¹ã©ã€ããŒã®äœçœ®ãå³åº§ã«å€æŽã§ããŸãã ãã€ãã®ããã«ãã€ãã³ããã³ãã©ã«ã€ããŠèª¬æããŸãã
def volume_change(instance, value): instance.title = ': %0.0f' % (value * 100) XSlider(title='', buttons=[''], on_change=volume_change)
ãããªãã¢ã¯ãon_changeã€ãã³ãã®æäœã®ãããäŸèšŒçãªãäŸã瀺ããŠããŸãã ããã§ããã³ãã©ãŒã³ãŒãã¯ãããã¢ããã®ãµã€ãºãå€æŽããŸãã
XAuthorizationã¯ã©ã¹
ãã®ã¯ã©ã¹ã䜿çšãããšããŠãŒã¶ãŒèªèšŒçšã®ã·ã³ãã«ãªãã©ãŒã ãäœæã§ããŸãã ãã®ãã©ãŒã ã«ã¯ããã°ã€ã³ãå ¥åããããã®ãã£ãŒã«ãããã¹ã¯ãŒããå ¥åããããã®ãã¹ãã³ã°æåãå«ããã£ãŒã«ããããã³ãèªåçã«ãã°ã€ã³ããããã§ãã¯ããã¯ã¹ããããŸãã ãã®äŸïŒ
空ã®èªèšŒãã©ãŒã ãäœæãããŸãã 次ã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠãã£ãŒã«ãã«å ¥åããŸãïŒ login ã passwordããã³autologin ïŒXAuthorization()
XAuthorization(login='login', password='password', autologin=True)
çµæïŒ
ãã©ãŒã ããããŒã¿ãåä¿¡ããããã«ããŠã£ã³ããŠã¯ããŒãºã€ãã³ããã³ãã©ãŒãäœæããŸãã .get_valueïŒïŒã¡ãœããã䜿çšããŠã察å¿ãããã£ãŒã«ãã®ã³ã³ãã³ããååŸããŸãã
def my_callback(instance): if not instance.is_canceled(): login = instance.get_value('login') password = instance.get_value('password') autologin = instance.get_value('autologin') print('LOGIN: %s, PASS: %s, AUTO: %s' % (login, password, autologin)) XAuthorization(login='login', password='password', autologin=True, on_dismiss=my_callback)
XFormã¯ã©ã¹
åºæ¬ã¯ã©ã¹ã«ã€ããŠç¥ã£ãŠããã¹ãããšã¯äœã§ããïŒ
- åºæ¬ã¯ã©ã¹ã«ã¯.get_valueïŒidïŒã¡ãœããããããæå®ãããidãæã€èŠçŽ ããã©ãŒã äžã§æ€çŽ¢ãããã®å€ãè¿ããŸãã ãã©ã¡ãŒã¿ãŒã¯ãªãã·ã§ã³ã§ããæå®ããªãå Žåãã¡ãœããã¯idãæå®ããããã©ãŒã ããæåã®èŠçŽ ãååŸãããã®å€ãè¿ããŸãã ãã®å®è£ ã¯ãèŠçŽ å€ã®ååŸããµããŒãããŠããŸãïŒ TextInputãSwitchãCheckBoxãSlider ã
- ã¯ã©ã¹ã«ã¯æœè±¡ã¡ãœãã._get_formïŒïŒããã ããã®çµæã¯ãã©ãŒã ã®ã³ã³ãã³ãã«ãªããŸãã
- ãã®ã¯ã©ã¹ã¯ãããã©ã«ãã§æ¬¡ã®äžé£ã®ãã¿ã³ãèšå®ããŸãïŒãOKããããã£ã³ã»ã«ãã
OKããã©ãŒã ãæžããŠã¿ãŠãã ããïŒ
class MyForm(XForm): def _get_form(self): # layout = BoxLayout() # id ( ) layout.add_widget(Label(text='Show must go')) # id ( ) layout.add_widget(Switch(id='main_switch', active=True)) # return layout def my_callback(instance): # if not instance.is_canceled(): print('Switch value: ' + str(instance.get_value('main_switch'))) MyForm(title='Party switch', on_dismiss=my_callback)
ãããŠçµæãèŠãŠãã ããïŒ
.get_valueïŒidïŒã«å ããŠãã¯ã©ã¹ã«ã¯valuesããããã£ããããŸã ã ããã¯ãããŒããã©ãŒã èŠçŽ ã®IDã§ãããå€ããã®èŠçŽ ã®å€ã§ããèŸæžã§ãã ãã®ããããã£ã䜿çšããŠããã³ãã©ãŒãç°ãªãæ¹æ³ã§å®è£ ã§ããŸãã
def my_callback(instance): # if not instance.is_canceled(): print('Switch value: ' + str(instance.values['main_switch']))
ãã¡ã€ã«ããã²ãŒã¿ãŒ
ã€ãŸã ãã¡ã€ã«/ãã£ã¬ã¯ããªãéžæããããããŸãã¯ä¿åããããã¡ã€ã«ã®ååãå ¥åããããã®ãŠã£ã³ããŠã ãããã¯æ¬¡ã®ããã«ãªããŸãã
XFileOpenã¯ã©ã¹
ãã¡ã€ã«ãéžæããããã®ãŠã£ã³ããŠãäœæããŸãã äŸïŒ
XFileOpen()
è€æ°ã®ãã¡ã€ã«ãéžæããå¿ èŠããããŸããïŒ ããã€ãéžæããŠãã ããã åæã«ãããã©ã«ãã®ãã¹ã瀺ããéžæãããã¡ã€ã«ã®ãªã¹ããååŸãããã³ãã©ãŒã説æããŸãã
def my_callback(instance): if not instance.is_canceled(): print(u'Path: ' + instance.path) print(u'Selection: ' + str(instance.selection)) XFileOpen(multiselect=True, path=u'c:\python27', on_dismiss=my_callback)
ã¯ã©ã¹ã«ã¯ãã§ã«ç©ºã®éžæè¢ããã§ãã¯ããããã®å®è£ ãå«ãŸããŠããããŠãŒã¶ãŒãå°ãªããšã1ã€ã®ãã¡ã€ã«ãéžæããããŸã§ãéãããã¿ã³ãã¯ãªãã¯ããŠãŠã£ã³ããŠãéããããšã¯ã§ããŸããã ãã®ããããã³ãã©ãŒã§ã¯ãããã£ã³ã»ã«ããã¯ãªãã¯ãããšãã«ã®ã¿ãã§ãã¯ãèšè¿°ããŸãã
ãããŠãã¯ã©ã¹ã®ãã·ã¢èªã®ããŒã«ã©ã€ãºãäœæããããšããŠããŸãã ããã®ãã¿ã³ã®ç°¡åãªå€æŽã¯äžå¯æ¬ ã§ã;ã¿ã³ããªã³ãšå°ãèžããªããã°ãªããŸããïŒ
class XFileOpenRU(XFileOpen): title = StringProperty(' ') # BUTTON_OPEN = '' # .is_canceled() BUTTON_CANCEL = '' # TXT_ERROR_SELECTION = ', ?' # buttons = ListProperty([BUTTON_OPEN, BUTTON_CANCEL]) XFileOpenRU()
ããŸã䟿å©ã§ã¯ãããŸããããçŸåšã®ããŒãžã§ã³ã§ã¯ããã解決çã§ãã ããŒãžã§ã³0.3.0ã§ã¯ãããŒã«ã©ã€ãºã®å©äŸ¿æ§ãåäžããŸãã
XFileSaveã¯ã©ã¹
ä¿åãããã¡ã€ã«ã®ååãå ¥åãããŠã£ã³ããŠã éžæããããã£ãšè€æ°éžæããããã£ãé€ããåæ§ã®æ¹æ³ã§äœ¿çšãããŸããããã§ã¯å¿ èŠãããŸããã 代ããã«ã次ã䜿çšããŸãã
- filename-ãã¡ã€ã«åã®å ¥åãã£ãŒã«ãã«é¢é£ä»ããããŠãããããã©ã«ãå€ãèšå®ããããå ¥åãããããã¹ããèªã¿åãããšãã§ããŸãã
- .get_full_nameïŒïŒã¯ããã¡ã€ã«åãå«ããã¹ãè¿ãã¡ãœããã§ãã
äŸïŒ
def my_callback(instance): if not instance.is_canceled(): # print(u'Path: ' + instance.path) # print(u'Filename: ' + instance.filename) # print(u'Full name: ' + instance.get_full_name()) popup = XFileSave(filename='file_to_save.txt', on_dismiss=my_callback)
ãã®ã¯ã©ã¹ã«ã¯ãå ¥åãã£ãŒã«ãã«ããã¹ãããªããã©ããããã§ãã¯ããå®è£ ãå«ãŸããŠããã®ã§ãæ°ã«ããŸããã
XFolderã¯ã©ã¹
ãã£ã¬ã¯ããªãéžæããããã®ãŠã£ã³ããŠã XFilePopupãšåæ§ã«äœ¿çšãããŸã ã ãã¥ã¢ã³ã¹ã¯ ã multiselect = Falseã®å Žåã éžæããããã£ã«ã¯çŸåšã®ãã£ã¬ã¯ããªãå«ãŸããïŒã€ãŸããçŸåšéããŠãããã£ã¬ã¯ããªãéžæãããããã«ããå¿ èŠã«å¿ããŠã«ãŒããéžæã§ããïŒã multiselect = Trueã®å Žåã éžæããããã£ã«ã¯éžæããããã£ã¬ã¯ããªã®ãªã¹ããå«ãŸãã
ãã£ã¬ã¯ããªã®éžæã®åŸ®åŠãã®è©³çŽ°ã«ã€ããŠã¯ã以äžãåç §ããŠãã ããã
XFilePopupã¯ã©ã¹
kivy.uix.filechooser.FileChooserã«åºã¥ã -ãã¡ã€ã«ã·ã¹ãã ãããã²ãŒãããããã®ãŠã£ãžã§ããã ããã«å ããŠããããã¢ãããŠã£ã³ããŠã«ã¯æ¬¡ã®èŠçŽ ãå«ãŸããŸãã
- ãã¿ã³ãã¢ã€ã³ã³ã-ã¢ã€ã³ã³åœ¢åŒã§ã³ã³ãã³ãã衚瀺ããã¢ãŒãããªã³ã«ããŸãã
- ãã¿ã³ããªã¹ãã-ãªã¹ã圢åŒã§ã³ã³ãã³ãã®è¡šç€ºã¢ãŒããæå¹ã«ããŸãã
- ãæ°èŠãã©ã«ãããã¿ã³-æ°ãããã£ã¬ã¯ããªãäœæããŸãã
- çŸåšã®ãã£ã¬ã¯ããªã衚瀺ããã©ãã«ã
FileChooserã«ã¯äŸ¿å©ãªããããã£ã®å€§ããªãªã¹ãããããŸããã XFilePopupã§ã¯ãå¿ é ãããããã£ã®ã¿ãã¬ã³ããªã³ã°ãããŸãã
- path-ãŠã£ã³ããŠã®äœææã«ã³ã³ãã³ãã衚瀺ããããã£ã¬ã¯ããªã ããã©ã«ãã¯ã/ãã§ãã ãã£ã¬ã¯ããªãå€æŽãããšãã«å€ãå€æŽããŸãã
- multiselect-è€æ°ã®èŠçŽ ã®éžæãæå¹/ç¡å¹ã«ããŸãã ããã©ã«ãã¯Falseã§ãã
- dirselect-ãã£ã¬ã¯ããªéžæãæå¹/ç¡å¹ã«ããŸã; ããã©ã«ãã¯Falseã§ãã éèŠ ïŒ dirselect = Falseã®å Žå ããã£ã¬ã¯ããªã¯ã¯ã³ã¯ãªãã¯ã§éããŸãã with dirselect = True-ã·ã³ã°ã«ã¯ãªãã¯ã§éžæãããã£ã¬ã¯ããªãããŒã¯ããããã«ã¯ãªãã¯ã§éããŸãïŒã¢ãã€ã«ããã€ã¹ã§ã¯ããŸã䟿å©ã§ã¯ãããŸããïŒã
- selection-éžæãããã¢ã€ãã ãå«ããªã¹ãã
- browser - FileChooserã¯ã©ã¹ã®ãªããžã§ã¯ããä»ã®ããããã£ã䜿çšããæ©èœããåºåãããŸãã
ãŠã£ã³ããŠãäœæãããã¹ãšãã¿ã³ã®ã»ããã衚瀺ããŸãïŒ XFilePopupã«ã¯ç¬èªã®ãã¿ã³ã®ã»ããã¯ãããŸããïŒã ãããŠãããã«ãã³ãã©ãŒãèšè¿°ããŠçµæãååŸããŸãã
def my_callback(instance): print(u'Path: ' + instance.path) print(u'Selection: ' + str(instance.selection)) XFilePopup(title=' ', buttons=['Select', 'Close'], path=u'c:/python27', on_dismiss=my_callback)
ãã¹ãã©ã¡ãŒã¿ã«æ³šæããŸããã-å€ã¯UnicodeæååãšããŠæž¡ãããŸãã ããã¯ãéASCIIæåïŒwindows-1251ãšã³ã³ãŒãæåãªã©ïŒãå«ããã¡ã€ã«åãšãã£ã¬ã¯ããªãæ£ãã衚瀺ããããã«å¿ èŠã§ãã
ãã®çµæããã©ã«ããŒãéžæããæ©èœãªãã§ã1ã€ã®ãã¡ã€ã«ã®ã¿ãéžæã§ããããã²ãŒã¿ãŒãååŸããŸãïŒXFileOpenã®ã¢ããã°ïŒã
3 2ã¯ãžã©
ãããŠæåŸã«ããŠã£ã³ããŠãã¬ãŒã ã«ã€ããŠã®ããã€ãã®èšè
XBaseã¯ã©ã¹
ã¯ã©ã¹éå±€ãããããããã«ã XBaseã¯ãã®èšäºã§èª¬æãããã¹ãŠã®ã¯ã©ã¹ã®ç¥å ã§ãã ããããã£ãšã¡ãœããã®ããã€ãã«ãã§ã«æ £ããŠããŸããããã§ã¯ããªããžã§ã¯ãæåã§éä¿¡ãããæ©èœã®å®å šãªãªã¹ãã瀺ããŸãã
- auto_open-ããŒã«å€ããããã£ã Trueã®å Žåãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæãããšããŠã£ã³ããŠãèªåçã«è¡šç€ºãããŸãã ãã以å€ã®å Žåãã€ã³ã¹ã¿ã³ã¹ã«ãŠã£ã³ããŠã衚瀺ããã«ã¯ã .openïŒïŒã¡ãœãããåŒã³åºãå¿ èŠããããŸãã ããã©ã«ãã¯Trueã§ãã
- ãã¿ã³ -ãããã¢ããã³ã³ãããŒã«ãã¿ã³ã®ã»ãããå®çŸ©ãããªã¹ãããããã£ã ããã©ã«ãã¯[]ã§ãã
- button_pressed-æŒãããã³ã³ãããŒã«ãã¿ã³ã®ååãå«ãæååããããã£ã on_dismissã€ãã³ããã³ãã©ãŒã§äœ¿çšã§ããŸãã
- .is_canceledïŒïŒã¯ãæŒããããã¿ã³ã®ååãXBase.BUTTON_CANCELã®å Žåã«Trueãè¿ãã¡ãœããã§ãã
- ._get_bodyïŒïŒã¯æœè±¡ã¡ãœããã§ããããã®çµæã¯ãŠã£ã³ããŠã®ã³ã³ãã³ãã«ãªããŸãã
ãŸãããã®ã¯ã©ã¹ã¯ããã©ã«ãå€ãã¹ãŒããŒã¯ã©ã¹ã®ããã€ãã®ããããã£ã«èšå®ããŸãã
- min_width = 300dp ã min_height = 150dp ã fit_to_window = True - XPopupã®ããããã£ã以äžã®è©³çŽ°ã
- size_hint =ïŒã6ã.3ïŒ-Popupã®ããããã£ã¯ããŠã£ã³ããŠã®çžå¯Ÿãµã€ãºãèšå®ããŸãã
- auto_dismiss = False - Popupã®ããããã£ããŠã£ã³ããŠèªäœã®å€åŽã®ã€ã³ã¿ãŒãã§ã€ã¹ã®ä»»æã®é åãã¯ãªãã¯ããŠãŠã£ã³ããŠãéããããšãçŠæ¢ããŸãã
ã泚æ ãã®ã¯ã©ã¹ã¯ã Popupã¯ã©ã¹ã®contentããããã£ãç¡èŠããŸã ã
XPopupã¯ã©ã¹
Popupã®åå«ã§ããã XBaseã®ã¹ãŒããŒã¯ã©ã¹ã§ãã ã¢ãã€ã«ããã€ã¹
- min_widthãšmin_height-ãŠã£ã³ããŠã®æå°ã®å¹ ãšé«ããããã©ã«ãå€ã¯ãããŸããã size_hintãšé£æºããŠåäœããŸãã äžçªäžã®è¡ïŒæå®ãããmin_widthããã³/ãŸãã¯min_heightã«å¯ŸããŠã size_hintå€ãä¿®æ£ããããŠã£ã³ããŠãµã€ãºã蚱容ãããæå°å€ä»¥äžã«ãªããŸãã
- fit_to_window-ããŒã«åããããã£ããŠã£ã³ããŠã«åãŸãããããã©ã«ãã¯Falseã§ãã ãµã€ãºãšé£æºããŠåäœããŸã ã äžçªäžã®è¡ïŒfit_to_window = Trueã®å Žåã ãµã€ãºå€ã¯ããããã¢ãããŠã£ã³ããŠã®ãµã€ãºãã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠã®ãµã€ãºãã倧ãããªããªãããã«èª¿æŽãããŸãã
ã泚æ 説æãããŠããããããã£ã®é©çšã¯ããŠã£ã³ããŠã衚瀺ãããŠãããšãã«ã®ã¿çºçããŸãã
åç §è³æ
XPopupã«ããKivyãã¬ãŒã ã¯ãŒã¯ã®æ¡åŒµïŒããŒã1ïŒ
èŠèŠè£å©ïŒãããªãã¢ã³ã¹ãã¬ãŒã·ã§ã³ïŒ ã
XPopupããã±ãŒãžãããŠã³ããŒãããŸã ã
ä»æ¥ã¯ä»¥äžã§ãã
ãæž èŽããããšãããããŸãããã³ãŒãã£ã³ã°ãã楜ãã¿ãã ããã