質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

4398閲覧

Pythonista3 におけるtableview プログラムを閉じると入力した内容が初期化されてしまう。

pokarin

総合スコア0

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/20 14:19

状況

 pythonista3に標準でついているUIにあるtableviewを使用して、子供が考えた恐竜の名前をどんどん追加していくプログラムを作っています。(初心者で下のHPを参考に初めて打ったプログラムです。)

https://mmm-ssss.com/2020/03/03/【pythonista3】pythonでiosアプリ開発3uiボタン②/

発生している問題・エラーメッセージ

プログラムが開いているうちはtableviewの項目追加をどんどんしていけるのですが、一度消プログラムを閉じると、せっかく追加した項目が消えてしまい(初期状態に戻ってしまい)困っています。普通に項目を追加していきたい。初期状態とは下の図のようにdatasourceに入っているデータは残る状態ということです。
イメージ説明

エラーメッセージ は特にありません。

該当のソースコード

ほぼ上のURLにあるコードそのままで書いたつもりです。

python

1import ui 2 3textfield = None 4 5def on_textfield(sender): 6 label = sender.superview['label'] 7 textfield = sender.superview['textfield'] 8 label.text = textfield.text + 'が入力されました' 9 10def on_tableview1(sender): 11 sel = sender.selected_row 12 item = sender.items[sel] 13 textfield.text = item 14 15def on_add(sender): 16 tableview1 = sender.superview['tableview1'] 17 textfield = sender.superview['textfield'] 18 label = sender.superview['label'] 19 tableview1.data_source.items.append(textfield.text) 20 label.text = '[' + textfield.text +']を追加しました' 21 textfield.text = '' 22 23v = ui.load_view() 24label = v['label'] 25v.present('sheet') 26

試したこと

・.pyuiファイルにおけるtableviewの各種パラメータをいじると保存できるようにならないか試した。

補足情報(FW/ツールのバージョンなど)

・2週間前にダウンロードしたpythonista3を使用しております。
・2週間前からprogateで勉強しはじめた程度で、勉強が足りてない状況で作りはじめたのはわかっているのですが、表ができた時に嬉しくて子供に「できたよ」と披露するも保存されず、子供に悲しい思いをさせてしまいました。

わかる方おられたら教えてください。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

当該環境を持ってないのに反応します。

allanburleson/mediawiki_ui: mediawiki_ui is a Pythonista module for a nicer iOS user interface for MediaWiki wikis.

こちら、おそらく Pythonista で作成したモジュールなのですが、以下のファイルで tableview の data_source の内容をファイルから読み込んで生成し、save メソッドで保存するコードが書かれています。参考になりませんでしょうか。

mediawiki_ui/mwapp.py at master · allanburleson/mediawiki_ui

68行目から始まる class WikiList です。

def init(self, wikis): で以下のようにファイルから、データソースを生成しています。

python

1 # If save file exists use it 2 if os.path.isfile(os.path.expanduser('~/.mwsave.dat')): 3 s = shelve.open(os.path.expanduser('~/.mwsave')) 4 try: 5 wikis = s['wikis'] 6 except KeyError: 7 pass 8 s.close() 9 self.tv = ui.TableView(name='Wikis') 10 self.nv = ui.NavigationView(self.tv) 11 self.tv.delegate = TableViewDelegate(wikis) 12 items = [] 13 # Create data source from dictionary of wikis 14 for wiki in wikis: 15 items.append({'title': wiki, 16 'accessory_type': 'detail_disclosure_button'}) 17 self.tv.data_source = ui.ListDataSource(items)

また、def save(self): でファイルに保存しています。

python

1 def save(self): 2 '''Save app data''' 3 try: 4 s = shelve.open(os.path.expanduser('~/.mwsave')) 5 except FileNotFoundError: 6 open(os.path.expanduser('~/.mwsave.dat'), 'a') 7 s['items'] = self.tv.data_source.items 8 wikis = {} 9 for wiki in self.tv.delegate.wikis: 10 wikis[wiki] = self.tv.delegate.wikis[wiki] 11 s['wikis'] = wikis 12 s.close()

投稿2020/05/30 01:58

Yasumichi

総合スコア1773

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pokarin

2020/06/01 03:19

返信遅くなっており申し訳ありません。ありがとうございます! 確かにセーブデータの生成って自分のプログラムにはないですし、少なくとも自分が書いたプログラムは書き換わっていないので、どこかに保存しなおさなきゃいけないってことですよね。確かに・・・。 これから試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問