現在、私はツリービューを使用しています。問題は、かなり大きなデータセットを使用していることです。 GUIが大規模ではないように、ウィンドウに合わせてツリービューのサイズを制限し、垂直と水平のスクロールバーを追加しました。それは私が望むようにデータを正確に表示しますが、各方向にスクロールする際にはスピードの問題があります。スプレッドシートのようなデータを表示するためのより良い/より速い方法がありますか?スクロール可能なスプレッドシートをTkinter内でどのように表示する必要がありますか?
0
A
答えて
1
私はpandastable(https://github.com/dmnfarrell/pandastable)を使用して終了:私はチャンスを得るとき、私はそれについての説明を記述します。スプレッドシートにデータを簡単に表示する方法を提供しました。列にソート、フィルタリング、関数を適用する
+1
これは基本的には直線とテキストが描かれたtkinterのキャンバスで、tclを開発している誰かがtkinterのためにCで適切なテーブルウィジェットを書いていないというのは本当に残念です – citizen2077
1
下記の溶液は一緒に石畳されていますが、望ましい結果が得られるはずです。
from tkinter import *
class App:
def __init__(self, root):
self.entry = []
self.sv = []
self.root = root
self.canvas = Canvas(self.root, background="#ffffff", borderwidth=0)
self.frame = Frame(self.canvas, background="#ffffff")
self.scrolly = Scrollbar(self.root, orient="vertical", command=self.canvas.yview)
self.scrollx = Scrollbar(self.root, orient="horizontal", command=self.canvas.xview)
self.canvas.configure(yscrollcommand=self.scrolly.set)#, xscrollcommand=self.scrollx.set)
self.canvas.create_window((4,4), window=self.frame, anchor="nw", tags="self.frame")
self.scrolly.pack(side="left", fill="y")
self.canvas.pack(side="top", fill="both", expand=True)
self.scrollx.pack(side="bottom", fill="x")
self.frame.bind("<Configure>", self.onFrameConfigure)
for i in range(15):
self.entry.append([])
self.sv.append([])
for c in range(30):
self.sv[i].append(StringVar())
self.sv[i][c].trace("w", lambda name, index, mode, sv=self.sv[i][c], i=i, c=c: self.callback(sv, i, c))
self.entry[i].append(Entry(self.frame, textvariable=self.sv[i][c]).grid(row=c, column=i))
def onFrameConfigure(self, event):
self.canvas.configure(scrollregion=self.canvas.bbox("all"))
def callback(self, sv, column, row):
print("Column: "+str(column)+", Row: "+str(row)+" = "+sv.get())
root = Tk()
App(root)
root.mainloop()
関連する問題
- 1. アンドロイドでスクロール可能なビューを作成する必要があります
- 2. Googleスプレッドシートで1行/パスワードを非表示にする必要があります
- 3. スクロール可能なLinearLayout内でEditTextをスクロール可能にするにはどうすればよいですか?
- 4. どのようなユーザー名を許可する必要がありますか?
- 5. jQueryスクロール機能スティッキーヘッダーはスクロールする必要があります
- 6. Javascript、DOM:スクロール可能な要素内のスペースを探す必要があります
- 7. iframe内でPDFをスクロールする必要があります
- 8. CustomExceptionをシリアライズ可能にする必要がありますか?
- 9. インポート可能な.sqlite永続ストアの名前はどのようにする必要がありますか?
- 10. matplotlib(imshow)のすべてのブロックをどのようにクリック可能にする必要がありますか?
- 11. コンテンツがスクロール可能な間にスクロールバーを非表示にするにはどうすればよいですか?
- 12. 開いているグラフオブジェクトは、ユーザーの表示可能なページに対応する必要がありますか?
- 13. スクロール可能なトップレベルウィンドウ(tkinter)
- 14. スクロールでスピナーやその他のアイテムをどのくらい表示する必要がありますか?
- 15. コントロールのようなスプレッドシートを作成する必要がありますが、ListViewまたはGridViewを拡張する必要はありますか?
- 16. Androidはこのようにテキストビューに表示する必要があります
- 17. スクロール可能なコンテナに要素が表示されていますか?
- 18. どこからMFMailComposeViewControllerをクリーンアーキテクチャで表示する必要がありますか?
- 19. なぜHibernateはリストインデックスをヌル可能にする必要がありますか?
- 20. 要素が表示され、クリック可能かどうかを確認する方法はありますか?
- 21. ベクトル要素は移動可能である必要がありますか?
- 22. どのようにレールのネストされたリソースのパスを表示する必要がありますか?
- 23. エラーが発生する "コンポーネントを表示可能にする必要があります"
- 24. 円形ビュー内にカメラのプレビューを表示する必要があります
- 25. divタグ内の関数を非表示にする必要があります
- 26. すべてのAndroid SDKが必要ですか、どのようにインストールする必要がありますか?
- 27. 反応ネイティブのスクロール可能なタブビューが必要です
- 28. RecyclerViewでの無限スクロール:これはどのように実装する必要がありますか?
- 29. マップボックス内のInfoWindowメソッド内でどのようなビューを返す必要がありますか?
- 30. rxjava2 - どのように圧縮する必要があります空である可能性がありますか?
ユーザーがスプレッドシート内のセルを更新できるようにするか、すべてのデータが静的であり、プログラムによってロード/計算されているか? –
@EthanField編集可能なデータがあればいいですね。しかし、静的なデータを持っているとかなり速くなりますが、私は静的なアプローチには間違いありません。 – Roars
どちらも可能ですが、どちらも応答性の点では非常に優れていますが、編集可能なフォームはもっと深いところです。直接入力できるようにする必要がある場合、Excelがその目的には十分ではない理由はありますか? –