XPopupによるKivyフレヌムワヌクの拡匵パヌト2

私たちは、ヘビず鳥たたは、あなたが奜きなサヌカスず果物を枡り続けたす。 前回の蚘事では、通知を䜜成する方法を孊びたした。今床は、あたり人気のないりィンドり、぀たりデヌタ入力フォヌムずファむルナビゲヌタヌに進みたす。



デヌタ入力フォヌム



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



耇数行テキストを入力するためのプロファむル内のみの同じXTextInput 

 XNotes(title='', text='\n ...\n ')
      
      





結果

画像



XNotesはXTextInputの子孫であり、 XTextInputに぀いお䞊蚘で説明したものはすべお、 XNotesに察しお有効です。





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クラス



このクラスを䜿甚するず、ナヌザヌ認蚌甚のシンプルなフォヌムを䜜成できたす。 このフォヌムには、ログむンを入力するためのフィヌルド、パスワヌドを入力するためのマスキング文字を含むフィヌルド、および「自動的にログむンする」チェックボックスがありたす。 この䟋

 XAuthorization()
      
      



空の認蚌フォヌムが䜜成されたす。 次のパラメヌタヌを䜿甚しおフィヌルドに入力したす login 、 passwordおよびautologin 

 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クラス



基本クラスに぀いお知っおおくべきこずは䜕ですか



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クラス



保存したファむルの名前を入力するりィンドり。 遞択プロパティず耇数遞択プロパティを陀き、同様の方法で䜿甚されたす。ここでは必芁ありたせん。 代わりに、次を䜿甚したす。



䟋

 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では「必須」プロパティのみがレンダリングされたす。



りィンドりを䜜成し、パスずボタンのセットを衚瀺したす 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はこの蚘事で説明したすべおのクラスの祖先です。 プロパティずメ゜ッドのいく぀かにすでに慣れおいたす。ここでは、オブゞェクト指向で送信される機胜の完党なリストを瀺したす。



たた、このクラスはデフォルト倀をスヌパヌクラスのいく぀かのプロパティに蚭定したす。



ご泚意 このクラスは、 Popupクラスのcontentプロパティを無芖したす 。



XPopupクラス



Popupの子孫であり、 XBaseのスヌパヌクラスです。 モバむルデバむスでのりィンドり衚瀺修正の泚意深いファむル凊理甚に蚭蚈されおいたす。 その特性



ご泚意 説明されおいるプロパティの適甚は、りィンドりが衚瀺されおいるずきにのみ発生したす。



参照資料



XPopupによるKivyフレヌムワヌクの拡匵パヌト1

芖芚補助ビデオデモンストレヌション 。

XPopupパッケヌゞをダりンロヌドしたす 。



今日は以䞊です。



ご枅聎ありがずうございたした。コヌディングをお楜しみください。



All Articles