python 3.5で記述されたプログラムがあり、ディレクトリをスキャンしてSQLite3 dbに格納します。この情報は、クライアントのttk.treeviewに表示することができます。Tkinterツリービューのテキストは、クライアントが再起動するまで表示されません。
2つの主な機能は、1) "db"と2)viewFilesに情報を追加する "スキャン"(dbのデータを取得してツリービューに表示する)です。
スキャン機能の実行中、2番目のtkinterウィンドウが開き、スキャンされたものに関する情報が表示されます。再起動せずにviewFiles関数を使用しようとすると、表示されるデータは見えなくなりますが、テキストドキュメントに貼り付けることができるので、データがそこにあることがわかります。クライアントを再起動すると、viewFiles関数にリンクされたボタンを押した後にテキストが正しく表示されます。
私は、この2回目のウィンドウがスキャンプロセス中に開いているので、フォーカスシフトに関係するものでなければならないと思いますが、わからないし、似たようなケースを見つけることができません。
def viewFiles(self):
global dataTreeView
results = []
foldersContentsToView = yieldFoldersToView()
for dpath in foldersContentsToView:
sqlstring= "SELECT * FROM DBDATA WHERE directorypath=:dpath"
values = {"dpath": dpath}
[results.append(i) for i in databaseFunctions.getDBobject().returnSelectQueryResults(sqlstring, values)]
for e in results:
dataTreeView.insert('', 'end', values=list(e))
誰にでもアイデアはありますか?
答えは、ツリービューが表示されていない理由に依存します。それは適切に置かれたかグリッド化されていますか?ですから、おそらくfocus_get()またはlift()が必要です。 http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/universal.html –
正しく梱包されています。 viewFilesが実行されると、スクロールバーがアクティブになり、値のセットを上下にスクロールして行を選択することもできます。唯一のことは、実際にテキストを見ることができないことです。クライアントを再起動しない限り。私はfocus_get()、lift()、focus_force()を使ってみましたが、変更はありません... – user3535074