kivy の練習にスマホでも使えるメモアプリを開発していたんですが
保存しようとするとたまにアプリが停止してしまい ctrl+Cで強制終了しないといけない事態になります 原因はまったくわかりません
一定確率で停止するアプリなんて最悪なんで何とかしたいです さすがにこれだけで解決策はなかなかでないと思うのでせめて
似たような事例、sql kivyの高度な情報(実はそもそも相性がわるかった みたいな)などを知っている方がいましたら教えてください
くわしい症状
print("aaaaaaaaaaaaaaaa",data)までは機能しており
self.conn.commit()、またはself.list_up()に原因があると思います
エラーも表示されないのでまったくわからない状況です
正常に行く場合はself.list_up()によってメモ内容がすべてprintされます
環境
win10pcで実行
from kivy.lang import Builder Builder.load_file('mem2.kv') import kivy #import japanize_kivy from kivy.app import App from kivy.uix.label import Label from kivy.clock import Clock from kivy.config import Config from kivy.uix.widget import Widget from kivy.uix.gridlayout import GridLayout from kivy.uix.textinput import TextInput from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.uix.button import ListProperty from kivy.properties import StringProperty from kivy.factory import Factory import sqlite3 import random import time import datetime class LoginScreen(Widget): window1 = None text = StringProperty('') name = StringProperty('') tags = StringProperty('') def __init__(self, **kwargs): super(LoginScreen, self).__init__(**kwargs) self.cursor="" self.cols = 2 self.text = 'No Text' self.name ="" self.tags ="" def OKClick(self): self.text = self.ids.text1.text self.name = self.ids.name1.text self.tags = self.ids.tags1.text #mem=open(self.name +".TXT","a", encoding='utf-8') #mem.write(self.text+"</br>") #mem.close() # # sql = """INSERT INTO mem_list VALUES(?, ?, ?,?,?)""" dt_now = str(datetime.datetime.now()) id_=str(random.random())+dt_now data = ((id_, self.tags, self.name, self.text, dt_now))#挿入するレコードを指定 print("aaaaaaaaaaaaaaaa",data) self.cursor.execute(sql, data)#executeコマンドでSQL文を実行 self.conn.commit()#コミットする self.list_up() self.ids.text1.text="" def CATEClick(self): print("hgfudgui") def action_Click(self): self.clear_widgets() self.add_widget(self.window1) def list_up(self): sql = """SELECT * FROM mem_list""" self.cursor.execute(sql) print("bbbbbbbbbbbbbbbbbbbb",self.cursor.fetchall()) class MyApp(App): def on_start(self): print('default handler') def build(self): #sql = """SELECT name FROM sqlite_master WHERE TYPE='table'""" mains=LoginScreen() dbname = ('test.db')#データベース名.db拡張子で設定 mains.conn = sqlite3.connect(dbname, isolation_level=None) mains.cursor = mains.conn.cursor() return mains if __name__ == '__main__': MyApp().run()
<LoginScreen>: BoxLayout: orientation: 'vertical' size: root.size padding: 20 Button: id: button pos_hint: {'center_x': .5, 'center_y': .5} text: "OK" size_hint: (None, None) size: 100,40 on_press: root.OKClick() Button: id: button2 pos_hint: {'center_x': .3, 'center_y': .3} text: "settei" size_hint: (None, None) size: 100,40 on_press: root.CATEClick() TextInput: id: tags1 text: '' size_hint: (None, None) size_y: 50 hint_text: 'Input Text' TextInput: id: name1 text: '' size_hint: (None, None) size: 600,50 hint_text: 'Input Text' TextInput: id: text1 text: '' hint_text: 'Input Text' Label: id: label text: root.text```
まだ回答がついていません
会員登録して回答してみよう