クラスを使用して tkinter で複数の同様のフレームを作成するにはどうすればよいですか?

ショーン・ヴァン・イーデン

Tkinter で同じウィジェットを持つ複数のフレームを作成するにはどうすればよいですか? 基本的に、私がやりたいことは、画像に示されている同じウィジェットをすべて含む複数のフレームのセットの 15 のコピーを作成することです。ユーザー。ラジオ ボタンは、ユーザーが各写真 (前面、背面、上面など) を分類するためのものです。

コードを 15 回コピーするのはあまり効率的ではありません。クラスを使用してフレームを 1 回定義し、新しいフレームごとにコードを再利用できるかどうかを知りたいです。ユーザーが各フレームで何をしたかを追跡し、各フレームのラジオ ボタンとチェック ボックスでの選択を保存する必要があります。ユーザーがすべての写真を分類した後、ボタンをクリックすると、すべての写真が新しい ID で保存され、ラジオ ボタンからの情報が csv ファイルに保存されます。次に、写真の次のバッチが読み込まれ、プロセスが繰り返されます。

フレームの 1 つを作成するために使用したコードの例を含めました。これは、再利用可能にしたいコードです。15回も繰り返したくない。

  ############################################################################
#FRAME 3
Photo_2 = Frame(master, bg = "white",relief = RIDGE, bd = 2)
Photo_2.grid(column = 2, row = 1, padx=5, pady=5)
Lbl2 = Label(Photo_2,text = 'Frame 3')
Lbl2.grid(row = 0, column = 0, columnspan = 4, pady = 5)

# Check box
varc2 = StringVar()
varc2.set(0)
Check_2 = Checkbutton(Photo_2, variable = varc2, text="Relevant?", command = lambda:Chk_Val(varc2))
Check_2.grid(row = 1,column = 0,columnspan = 4)

# Photo 1
P2 = "Photo_2.jpg"
P2 = Image.open(P2).resize((200, 200), Image.ANTIALIAS)
phot2 = ImageTk.PhotoImage(P2)
panel = Label(Photo_2, image = phot2)
panel.grid(columnspan = 3, column=1)

# Create Multiple Radio Buttons
Rad_Cont = Frame(Photo_2)
Rad_Cont.grid(column = 0, row = 2)

v2 = StringVar()
v2.set("Address")

for text,mode in RADIO:
    b = Radiobutton(Rad_Cont, text=text, variable=v2,
                    value=mode, command = lambda:Rad_Val(v2))
    b.pack()

################################################################################
点滅する

もちろん、同様のオブジェクトを表すクラスを作成することもできます。

あなたが達成しようとしていることを実装する方法は次のとおりです。

import tkinter as tk

class PhotoFrame(tk.Frame):

    def __init__(self, master):

        tk.Frame.__init__(self, master, bg='white', relief='ridge', bd=2)

        self.label_widget()
        self.checkbox_widget()
        self.photo_widget()
        self.radio_widgets()


    def label_widget(self):
        self.title_label = tk.Frame(self, text='Frame 3')  # Or Frame 1, 2 etc.
        self.title_label.grid(row=0, column=0, columnspan=4, pady=5)


    def checkbox_widget(self):
        self.varc = tk.StringVar()
        self.varc.set(0)

        self.checkbox = tk.Checkbutton(self, variable=self.varc,
                                       text='Relevant?', command=self.Chk_Val)
        self.checkbox.grid(row=1, column=0, columnspan=4)


    def photo_widget(self):
        # ... Your code here


    def radio_widgets(self):
        # ... Your code here


    def Chk_Val(self):
        # ... Your code here

残りの部分を自分で学習して理解できるように、完全な解決策を提供することは避けましたが、クラスを使用するという点で、私が何を得ようとしているのかお分かりいただけると思います。これで、このクラスPhotoFrameは何度でも使用できますが、各フレームを適切に構成する必要があることを理解してください。たとえば、label_widgetセクション内のテキスト属性の割り当てを省略します(すべてのフレームが必要なわけではありません)。タイトルは「フレーム 3」)、メイン プログラム ロジックでは、次のPhotoFrameようにオブジェクトの各インスタンスを構成します

frame1 = PhotoFrame(master)
frame1.title_label.configure(text='Frame 1')  # Along with any other configuration

これがすべて役立つことを願っています-クラスに慣れていない場合は、提供されているドキュメントを確認してください。ここに素晴らしい tkinter リファレンスがあります: NMT tkinter

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Tkinterを使用して1つのフレーム内に複数のフレームをネストしようとしています。オブジェクト指向でこれを実現するにはどうすればよいですか?

分類Dev

tkinterフレームの要素数を整数として保存するにはどうすればよいですか?

分類Dev

LabelFrameのフレームを非表示にするにはどうすればよいですか?(Tkinter)

分類Dev

tkinterフレームの座標を選択するにはどうすればよいですか?

分類Dev

Tkinterのクラスを使用して新しいページを作成するにはどうすればよいですか?

分類Dev

tkinterを使用してフレームの中央にオブジェクトを配置するにはどうすればよいですか?

分類Dev

tkinterを使用してPythonの色付きフレームにテキストエントリを配置するにはどうすればよいですか?

分類Dev

別のクラスのtkinterラベルとフレームカラーを設定するにはどうすればよいですか?

分類Dev

tkinterのバックスペースキーをバインドして複数の文字を削除するにはどうすればよいですか?

分類Dev

TKinterリストボックスで複数のアイテムをシフト選択するにはどうすればよいですか?

分類Dev

Tkinterの別のフレーム内にフレームを追加するにはどうすればよいですか?

分類Dev

tkinterの背景画像を作成するにはどうすればよいですか?

分類Dev

tkinter.filedialogaskopenfilesを使用して複数の画像を開くにはどうすればよいですか

分類Dev

tkinter pythonでキャンバスに作成されたフレームを更新または破棄するにはどうすればよいですか?

分類Dev

ループ内にtkinterフレームを作成し、オブジェクト値を更新するにはどうすればよいですか?

分類Dev

tkinterを使用してラムダで0〜9の数字ボタンを作成するにはどうすればよいですか?

分類Dev

tkinterに複数のエントリを追加するにはどうすればよいですか?

分類Dev

以下に指定されたフォーマットのTkinterを使用してGUIを作成するにはどうすればよいですか?

分類Dev

tkinterのCanvasでオーバーレイVkeyboardを使用するにはどうすればよいですか?

分類Dev

クラスに割り当てる動的オブジェクト名を作成するにはどうすればよいですか?/異なるTkinterのオブジェクト名で複数のウィンドウを作成する方法

分類Dev

クラスなしでこの関数を作成するにはどうすればよいですか-Python3 Tkinter

分類Dev

Tkinter Entryを使用して複数行を入力するにはどうすればよいですか?

分類Dev

キープレスイベントの辞書を使用してキャンバスアイテムを斜めに移動するために、tkinterで2つの同時キープレスイベントをプログラムするにはどうすればよいですか?

分類Dev

キープレスイベントの辞書を使用してキャンバスアイテムを斜めに移動するために、tkinterで2つの同時キープレスイベントをプログラムするにはどうすればよいですか?

分類Dev

Python 3を使用してTkinterのフォームからScrolledTextに情報を送信するにはどうすればよいですか?

分類Dev

tkinterを使用してネストされた関数でグローバル変数を作成するにはどうすればよいですか?

分類Dev

tkinterを使用してメニューバーを作成するにはどうすればよいですか?

分類Dev

tkinterを使用してエントリのプレースホルダーテキストを中央に配置するにはどうすればよいですか?

分類Dev

tkinterを使用してソケットスレッドの一部であるwhileループを停止するにはどうすればよいですか?

Related 関連記事

  1. 1

    Tkinterを使用して1つのフレーム内に複数のフレームをネストしようとしています。オブジェクト指向でこれを実現するにはどうすればよいですか?

  2. 2

    tkinterフレームの要素数を整数として保存するにはどうすればよいですか?

  3. 3

    LabelFrameのフレームを非表示にするにはどうすればよいですか?(Tkinter)

  4. 4

    tkinterフレームの座標を選択するにはどうすればよいですか?

  5. 5

    Tkinterのクラスを使用して新しいページを作成するにはどうすればよいですか?

  6. 6

    tkinterを使用してフレームの中央にオブジェクトを配置するにはどうすればよいですか?

  7. 7

    tkinterを使用してPythonの色付きフレームにテキストエントリを配置するにはどうすればよいですか?

  8. 8

    別のクラスのtkinterラベルとフレームカラーを設定するにはどうすればよいですか?

  9. 9

    tkinterのバックスペースキーをバインドして複数の文字を削除するにはどうすればよいですか?

  10. 10

    TKinterリストボックスで複数のアイテムをシフト選択するにはどうすればよいですか?

  11. 11

    Tkinterの別のフレーム内にフレームを追加するにはどうすればよいですか?

  12. 12

    tkinterの背景画像を作成するにはどうすればよいですか?

  13. 13

    tkinter.filedialogaskopenfilesを使用して複数の画像を開くにはどうすればよいですか

  14. 14

    tkinter pythonでキャンバスに作成されたフレームを更新または破棄するにはどうすればよいですか?

  15. 15

    ループ内にtkinterフレームを作成し、オブジェクト値を更新するにはどうすればよいですか?

  16. 16

    tkinterを使用してラムダで0〜9の数字ボタンを作成するにはどうすればよいですか?

  17. 17

    tkinterに複数のエントリを追加するにはどうすればよいですか?

  18. 18

    以下に指定されたフォーマットのTkinterを使用してGUIを作成するにはどうすればよいですか?

  19. 19

    tkinterのCanvasでオーバーレイVkeyboardを使用するにはどうすればよいですか?

  20. 20

    クラスに割り当てる動的オブジェクト名を作成するにはどうすればよいですか?/異なるTkinterのオブジェクト名で複数のウィンドウを作成する方法

  21. 21

    クラスなしでこの関数を作成するにはどうすればよいですか-Python3 Tkinter

  22. 22

    Tkinter Entryを使用して複数行を入力するにはどうすればよいですか?

  23. 23

    キープレスイベントの辞書を使用してキャンバスアイテムを斜めに移動するために、tkinterで2つの同時キープレスイベントをプログラムするにはどうすればよいですか?

  24. 24

    キープレスイベントの辞書を使用してキャンバスアイテムを斜めに移動するために、tkinterで2つの同時キープレスイベントをプログラムするにはどうすればよいですか?

  25. 25

    Python 3を使用してTkinterのフォームからScrolledTextに情報を送信するにはどうすればよいですか?

  26. 26

    tkinterを使用してネストされた関数でグローバル変数を作成するにはどうすればよいですか?

  27. 27

    tkinterを使用してメニューバーを作成するにはどうすればよいですか?

  28. 28

    tkinterを使用してエントリのプレースホルダーテキストを中央に配置するにはどうすればよいですか?

  29. 29

    tkinterを使用してソケットスレッドの一部であるwhileループを停止するにはどうすればよいですか?

ホットタグ

アーカイブ