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

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

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

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

Python

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

解決済

[Python初心者] Tkinter Class グループ化したい。

削除済ユーザー
削除済ユーザー

総合スコア0

Tkinter

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

Python

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

1回答

0評価

0クリップ

11閲覧

投稿2020/09/14 05:46

Frameで分けているコードをclassでわかりやすくしたいです。

Python

import tkinter as tk #=-=-=-GUI-=-=-= #Create Instance win = tk.Tk() win.title("IVT Transcode app") win.geometry("700x700") #Turn on for locked Resolution win.configure(background='#52514F') # DARK MODE! | ダークモード! icon_photo = tk.PhotoImage(file = '/Volumes/UNSUNG HERO/PYTHON/IVTC_tool/film.png') # icon file | アイコンファイル win.iconphoto(False, icon_photo) # Sets the icon | アイコン #AppTitle = tk.Label(win, text="TDBT GUI v0.1", fg="white", bg="#52514F", font=('Verdana', 20, 'bold')) #----Frames | 枠組---- FrameOne = tk.LabelFrame(win, text="Input Settings", fg="white", bg="#52514F", padx="5", pady="5") #Input Settings Frame FrameTwo = tk.LabelFrame(win, text="Output Settings", fg="white", bg="#52514F", padx="5", pady="5") #Output Settings Frame FrameThree = tk.LabelFrame(win, text="Button", fg="white", bg="#52514F", pady="5", padx="5") #Buttoun Settings Frame FrameFour = tk.LabelFrame(win, text="Progress", fg="white", bg="#52514F", padx="5", pady="5") #Progress Settings Frame FrameFive = tk.LabelFrame(win, text="Preview", fg="white", bg="#52514F", padx="5", pady="5") #Preview Window Settings Frame #--Widgets | 特徴---- #Input Widgets | 入力 Text_Input_Path = tk.Label(FrameOne, text="Input Path ", fg="white", bg="#52514F", font=('Helvetica', 10)) Field_Input_Path = tk.Entry(FrameOne, fg="black", highlightbackground="#52514F") Button_Input_Path = tk.Button(FrameOne, text="Open File", highlightbackground="#52514F", font=('Helvetica', 10)) #Output Widgets | 出力 Text_Output_Path = tk.Label(FrameTwo, text="Output Path", fg="white", bg="#52514F", font=('Helvetica', 10)) Text_Output_Name = tk.Label(FrameTwo, text="Output Filename", fg="white", bg="#52514F", font=('Helvetica', 10)) Field_Output_Path = tk.Entry(FrameTwo, fg="black", highlightbackground="#52514F") Field_Output_Name = tk.Entry(FrameTwo, fg="black", highlightbackground="#52514F") Button_Output_Path = tk.Button(FrameTwo, text="Select Path", highlightbackground="#52514F", pady='2', font=('Helvetica', 10)) Extension_Value = tk.StringVar() Extension_Value.set(".MOV") #' default value as MOV | デフォルトMOV #Extension_Option = tk.OptionMenu(FrameTwo, Extension_Value) #Extension_Option.config(bg='#52514F', font=('Helvetica', 10), pady='2') #Cavas Area | キャンバスエリア canvas = tk.Canvas(FrameFive, width = 320, height = 240)#Canvasの作成 canvas.create_rectangle(0, 0, 320, 240, fill = 'gray')#塗りつぶし canvas.place(x=0, y=0)#Canvasの配置 #---- Button and Text | ボタンとテキスト----- ## Button Frame ## ButtonOne = tk.Button(FrameThree,text="Previwe", highlightbackground="#52514F", padx=5, pady=5) #Preview ButtonTwo = tk.Button(FrameThree, text="Clear", highlightbackground="#52514F", padx=5, pady=5) #Clear Button_ffm_simple = tk.Button(FrameThree, text="Simple Transcode", highlightbackground="#52514F", padx=5, pady=5) #Simple Transcode #Preview Widgets | プレビュー Preview_Start = tk.Button(FrameFive, text="Start", fg="black", bg="#52514F", font=('Helvetica', 10)) Preview_ad1f = tk.Button(FrameFive, text=" < ", fg="black", bg="#52514F", font=('Helvetica', 10)) Preview_bc1f = tk.Button(FrameFive, text=" > ", fg="black", bg="#52514F", font=('Helvetica', 10)) MediaInfoOut = tk.Text(FrameFive, height=15, width=40, bg="white", highlightbackground='grey') ## Progress Frame ## TextOutputText = tk.Text(FrameFour, height=3, width=80, bg="grey", highlightbackground='grey') ClearButton = tk.Button(FrameFour, text="Clear", highlightbackground="#52514F", padx=5, pady=5) #----Grid | 設計---- #AppTitle.grid(column=2, row=0, columnspan=4, pady="5",sticky='nsew') #Frames | 枠組 FrameOne.grid(column=2, row=2, padx='20', pady='10', sticky='nsew') FrameTwo.grid(column=2, row=3, padx='20', pady='10', sticky='nsew') FrameThree.grid(column=3, row=2, rowspan=2, padx='20', pady='10', sticky='nsew') FrameFour.grid(column=2, columnspan=2, row=4, padx='20', pady='10', sticky='nsew') FrameFive.grid(column=2, columnspan=2, row=1, padx='20', pady='10', sticky='nsew') #Input | 入力 Text_Input_Path.grid(column=0, row=0, sticky='w') Field_Input_Path.grid(column=1, row=0, sticky='nsew') Button_Input_Path.grid(column=2, row=0, sticky='e') #Output | 出力 Text_Output_Path.grid(column=0, row=0, sticky='w') Field_Output_Path.grid(column=1, row=0, sticky='nsew') Button_Output_Path.grid(column=2, row=0, sticky='nsew') Text_Output_Name.grid(column=0, row=1, sticky='w') Field_Output_Name.grid(column=1, row=1, sticky='nsew') #Extension_Option.grid(column=2, row=1, sticky='nsew') #Preview Grid| プレビュー Preview_Start.grid(column=1, row=5, sticky='nsew', pady=5, padx=5) Preview_ad1f.grid(column=0, row=5, sticky='e', pady=5, padx=5) Preview_bc1f.grid(column=2, row=5, sticky='w', pady=5, padx=5) canvas.grid(column=0, columnspan=3, row=0, rowspan=4, pady=5, padx=5) MediaInfoOut.grid(column=3, row=0, rowspan=3, sticky='nw', pady=10, padx=10) #Buttons Grid | ボタンの設計 ButtonOne.grid(column=2, row=0, sticky='nw', pady=5, padx=1) ButtonTwo.grid(column=2, row=1, sticky='nw', pady=5, padx=1) Button_ffm_simple.grid(column=2, row=2, sticky='nw', pady=5, padx=1) #Progress Grid | 進捗ウィンドウの設定 TextOutputText.grid(column=1, columnspan=2, row=1, sticky='nsew', pady=5, padx=5) ClearButton.grid(column=2, row=2, sticky='e', pady=1, padx=1) #Start the GUI | GUI開始 win.mainloop()

Applicationのメイン画面
Input_Settings
Output_Settings
Button(Controller)
Progress
Preview

上記の6つからなるフレームをClassで分けてわかりやすくしたいのですが、Classを複数持つ場合の書き方がわかりません。
どなたかご教授いただけないでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Tkinter

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

Python

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