2016-12-18 31 views
0

ここにスーパーnoobがあります。私は最初のPythonプログラムを完成させました。小さなデータベース用の簡単な検索エンジンです。今私はKivyとアンドロイドAPPとして移植しようとしています。私が今したいのは、元のソフトウェアでうまく機能する関数から、私のsqliteデータベース全体(20行程度)の内容を表示するだけです。KivyでSQLite Pythonを取得する

アンドロイドアプリでは、関数 '関数'は、 '印刷されたテキスト'は表示されますが、データベース自体の要素は表示されないため、機能しているようです。基本的には、 "MVA:"しか印刷されません。私は解決策を見つけるためにしばらく試していたが、私は固執した:/

あなたの助けをいただきありがとうございます。

#This is my main.py file 

from kivy.app import App 
import sqlite3 as lite 
import sys 
from kivy.uix.label import Label 
from kivy.uix.textinput import TextInput 
from kivy.uix.anchorlayout import AnchorLayout 
from kivy.core.window import Window 
from kivy.uix.button import Button 
from kivy.uix.boxlayout import BoxLayout 


import time 



Window.clearcolor = (1, 1, 1, 1) 

class SearchWidget(BoxLayout): 
    def list_table(self, *args): 
     try: 
      con = lite.connect('data.db') 
      con.text_factory = str 
      cur = con.cursor() 

      cur.execute("SELECT * FROM mva ORDER BY mva ASC") 
      con.commit() 
      ar = cur.fetchall() 

      for item in ar: 
       data = 'MVA ' + str(item[1]) + str(item[2]) + ': ' +  str(item[0]) + ' ' + str(item[3]) 

      return data 

    except lite.Error, e: 

     if con: 
      con.rollback() 

     print "Error %s:" % e.args[0] 
     sys.exit(1) 

    finally: 

     if con: 
      con.close() 


class MyApp(App): 

    def build(self): 

     return SearchWidget() 

if __name__ == '__main__': 
     MyApp().run() 

そして、これが私のmy.kvファイル

<SearchWidget>: 
    orientation: 'vertical' 
    TextInput: 
     id: my_textinput 
     font_size: 25 
     size_hint_y: None 
     height: 100 
     text: 'MVA Search' 

    BoxLayout: 
     Label: 
      color: (0, 0, 0, 1) 
      size: self.texture_size 
      text: root.list_table() 
      font_size: 25 

答えて

0
  1. 私は(root.list_tableを思ういけない)であるが、それはむしろボタンから呼び出されるべきだと思うidea..i良いです
  2. 私はこのコードを実行しようとしましたが、明らかにUI上の作業を指していません。あなたがboxlayoutにウィジェットを追加したい場合は、私のインデントをthis.forgiveできます。

    def list_table(self, *args): 
        try: 
         con = lite.connect('data.db') 
         con.text_factory = str 
         cur = con.cursor() 
    
        cur.execute("SELECT * FROM mva ORDER BY mva ASC") 
        con.commit() 
        ar = cur.fetchall() 
    
        for item in ar: 
         data = 'MVA ' + str(item[1]) + str(item[2]) + ': ' +  str(item[0]) + ' ' + str(item[3]) 
         self.add_widget(Label(text=data)) 
    
        return data` 
    
+0

あなたのソリューションは、動作します。ご協力ありがとうございました。 – Atoms

関連する問題