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

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

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

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

Q&A

解決済

1回答

1239閲覧

Tkinterでの表の作り方について

sirara

総合スコア13

Python

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

0グッド

0クリップ

投稿2020/10/28 13:50

Tkinterでの業務担当表を作成しようと考えています。
業務は「日次・月次・その他」と大きく3種類に分かれております

現在以下の表で日次業務の表を表示させることに成功しましたが、ヘッダーや幅の設定などで、tree_nichijiと使ってしまっているため、これを月次・年次と繰り返していくと非常に長いコードになってしまいます。

works=[tree_nichiji,tree_getsuji,tree_sonota] というリストを作成したのですが、これを使用してまとめて設定することはできないでしょうか?

また、現在表示されている表のテキストが左詰で表示されているのですが、これを中央にすることはできないでしょうか?

尚、以下のコードは長くなってしまうので関連する部分のみ載せております。

よろしくお願いいたします。

Python

1#表の作成 2tree_nichiji = ttk.Treeview(page_tantou) 3tree_getsuji = ttk.Treeview(page_tantou) 4tree_sonota = ttk.Treeview(page_tantou) 5 6works=[tree_nichiji,tree_getsuji,tree_sonota] 7 8#列の作成 9tree_nichiji["columns"] = (1,2,3,4) 10 11 12#ヘッダーの作成 13tree_nichiji["show"] = "headings" 14tree_nichiji.heading(1,text="業務") 15tree_nichiji.heading(2,text="主担当者") 16tree_nichiji.heading(3,text="副担当者") 17tree_nichiji.heading(4,text="サポート") 18 19 20#幅の設定 21tree_nichiji.column(1,width=100) 22tree_nichiji.column(2,width=100) 23tree_nichiji.column(3,width=100) 24tree_nichiji.column(4,width=100) 25 26tree_nichiji.insert("", "end", 27values=(shikinguri_nichiji.work,shikinguri_nichiji.name1,shikinguri_nichiji.name2,shikinguri_nichiji.name3)) 28 29#表の配置 30tree_nichiji.pack(fill=tk.X)

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

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

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

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

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

guest

回答1

0

ベストアンサー

works=[tree_nichiji,tree_getsuji,tree_sonota] というリストを作成したのですが、これを使用してまとめて設定することはできないでしょうか?

リストを回して設定することも出来ますが、クラスにすると良いです。
リストの場合は

python

1 2for tree in works: 3 tree.headings(...) 4 tree.columns(...) 5

また、現在表示されている表のテキストが左詰で表示されているのですが、これを中央にすることはできないでしょうか?

column で anchor を指定できます。


イメージ説明

python

1#!/usr/bin/env python3.8 2 3import tkinter as tk 4from tkinter import ttk 5 6 7class MyTable(ttk.Treeview): 8 COLUMNS = [ 9 # text, width, anchor 10 ("業務", 100, tk.CENTER), 11 ("主担当者", 100, tk.CENTER), 12 ("副担当者", 100, tk.CENTER), 13 ("サポート", 100, tk.CENTER) 14 ] 15 16 def __init__(self, *args, **kw): 17 super().__init__(*args, **kw) 18 19 self.config( 20 show="headings", 21 22 # NOTE: colums=[0, 1, 2, 3] 23 columns=list(range(len(self.COLUMNS))), 24 ) 25 26 for idx, (text, width, anchor) in enumerate(self.COLUMNS): 27 self.heading(idx, text=text) 28 self.column(idx, width=width, anchor=anchor) 29 30 31def main(): 32 root = tk.Tk() 33 frame = ttk.Frame(root) 34 frame.pack(fill=tk.BOTH, expand=tk.YES) 35 36 treeA = MyTable(frame) 37 treeB = MyTable(frame) 38 treeC = MyTable(frame) 39 40 treeA.pack() 41 treeB.pack() 42 treeC.pack() 43 44 treeA.insert("", tk.END, values=["AAA", "BBB", "CCC", "DDD"]) 45 46 root.mainloop() 47 48 49if __name__ == '__main__': 50 main()

以下のコードは長くなってしまうので関連する部分のみ載せております。

掲載外の部分が影響することもあるので、出来れば
長くなるような場合は、必要な箇所のみの小さなコードを作って、
コピー&ペーストのみで実行出来る形でお願いします。

投稿2020/10/28 19:45

編集2020/10/28 19:48
teamikl

総合スコア8760

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問