2016-12-18 21 views
0

超級noob在這裏。我完成了我的第一個Python程序,它的工作原理與它的意圖完全一樣。它是一個小型數據庫的簡單搜索引擎。現在我試圖將它作爲一個Android應用程序與Kivy一起移植。我現在想做的只是從原始軟件中運行良好的函數中顯示我的整個sqlite數據庫(20行左右)的內容。用Kivy獲取SQLITE python

在Android應用程序中,函數list_table似乎工作,因爲它顯示「打印文本」,但不顯示數據庫本身的元素。基本上它只打印「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,你可以這樣做,原諒我的縮進。

    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