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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

Q&A

1回答

312閲覧

Tkinterにてリストの「枠部分」の色変更方法がわかりません。

cyan

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

0グッド

0クリップ

投稿2022/08/17 23:16

Python TkinterにてTODOリストを作成しています。

全体的に黒色系統を使用した、今時なGUIをどうにかTkinterで作れないかと試行錯誤中です。
他サイトを参考にTODOリストを作成してみたのですが、リストの枠の色を変える方法がわかりません。
初歩的な質問かもしれませんが、お力になってくださると幸いです。

また、可能であれば「こうするとおしゃれにできるよ」等のアドバイスがいただけたらありがたいです。
よろしくお願いします。

イメージ説明

Python

1# -*- coding: utf-8 -*- 2 3from tabnanny import check 4import tkinter as tk 5 6 7class App: 8 def __init__(self): 9 # ウィンドウを初期化 10 self.master = tk.Tk() 11 self.master.title('TODO') 12 self.master.geometry('400x300') 13 self.master.configure(padx=16, pady=16) 14 15 self.master.configure(bg='#474747') 16 17 # TODO入力エリアを作成 18 self.input_area = InputArea(self.master,) 19 self.input_area.pack(side='top', fill='x') 20 self.input_area.click_add_btn = self.click_add_btn 21 22 23 # TODOリストの表示エリアを作成 24 self.list_area = ListArea(self.master) 25 self.list_area.pack(side='bottom', expand=True, fill='both',) 26 27 def mainloop(self): 28 # masterに処理を委譲 29 self.master.mainloop() 30 31 def click_add_btn(self): 32 """ 33 入力エリアの追加ボタンが押されたら呼ばれる 34 入力エリアの入力値をリストエリアに追加する 35 """ 36 todo = self.input_area.entry.get() # 入力値を取得 37 self.input_area.entry.delete(0, 'end') # 入力行に残ったテキストを削除 38 self.list_area.listbox.insert('end', todo) # リストにTODOを追加 39 40 41class InputArea(tk.Frame): 42 """ 43 TODOの入力エリア 44 ユーザーの入力を処理する 45 ユーザーが入力したTODOテキストを追加ボタンでリストに追加するのが役割 46 """ 47 48 def __init__(self, master): 49 super(InputArea, self).__init__(master) 50 51 # ハンドル 52 self.click_add_btn = None 53 54 # ラベルの作成 55 self.label = tk.Label(self, text='TODO', fg='white',bg='#383838') 56 self.label.pack(side='left') 57 58 # 入力行の作成 59 self.entry = tk.Entry(self , fg='white',bg='#383838') 60 self.entry.pack(side='left', expand=True, fill='x') 61 62 # 追加ボタンの作成 63 self.add_btn = tk.Button(self, text='追加', command=self._click_add_btn , fg='white',bg='#383838') 64 self.add_btn.pack(side='left') 65 66 def _click_add_btn(self): 67 if self.click_add_btn: 68 self.click_add_btn() 69 70 71class ListArea(tk.Frame): 72 """ 73 TODOリストの表示エリア 74 ユーザーが入力したTODOが表示される 75 """ 76 77 def __init__(self, master): 78 super(ListArea, self).__init__(master) 79 80 81 82 # リストの作成 83 self.listbox = tk.Listbox(self, height=5,fg='white',bg='#383838') 84 self.listbox.pack(side='top', expand=True, fill='both',) 85 86 # 削除ボタンの作成 87 self.del_btn = tk.Button(self, text='削除', command=self._click_del_btn , fg='white',bg='#383838') 88 self.del_btn.pack(side='bottom', fill='x') 89 90 self.check = tk.Checkbutton(self.master,) 91 92 93 def _click_del_btn(self): 94 """ 95 選択中のTODOを削除する 96 """ 97 sel = self.listbox.curselection() 98 for i in sel[::-1]: 99 self.listbox.delete(i) 100 101 102 103 104 105def main(): 106 app = App() 107 app.mainloop() 108 109 110if __name__ == '__main__': 111 main() 112

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

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

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

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

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

guest

回答1

0

へこんでるっぽい表示とか飛び出しってるっぽい表示とかはreliefで設定できます。これをflatにしないと後の設定を弄ってもそれっぽいスタイルにするために何か描画します。
枠線の太さはhighlightthicknessで設定します。
枠線の色はアクティブな時の色はhighlightcolor、そうじゃないときの色はhighlightbackgroundで設定できるようです。

python

1 self.listbox = tk.Listbox(self, height=5,fg='white',bg='#383838',relief='flat',highlightthickness=0,highlightbackground='#383838', highlightcolor='#383838') 2

投稿2022/08/18 01:43

RiaFeed

総合スコア2701

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問