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

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

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

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Tkinter

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

Python

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

Q&A

解決済

1回答

1852閲覧

[Python初心者] Tkinterでアプリを作成したい。

退会済みユーザー

退会済みユーザー

総合スコア0

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Tkinter

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

Python

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

0グッド

1クリップ

投稿2020/09/11 15:31

編集2020/09/11 16:59

前提・実現したいこと

Tkinterを使用して動画を再生し、コマ送りできるアプリを作成しようとしています。
GUIのデザインの書き方でClassを使わない方法で書いたのですが、わかりづらくなってしまいわかりやすくしたいのですがどうすればいいのかわかりません。
イメージ説明

・Clearボタンを右寄りにしたい
・Input PathのText欄とOutputのText欄の位置を揃えたい

発生している問題・エラーメッセージ

該当のソースコード

Python

1import os 2import sys 3import tkinter as tk 4from tkinter import filedialog 5 6#=-=-=-GUI-=-=-= 7#Create Instance 8win = tk.Tk() 9win.title("IVT Transcode app") 10 11win.geometry("800x600") #Turn on for locked Resolution 12win.configure(background='#52514F') # DARK MODE! | ダークモード! 13icon_photo = tk.PhotoImage(file = '/Volumes/UNSUNG HERO/PYTHON/IVTC_tool/film.png') # icon file | アイコンファイル 14win.iconphoto(False, icon_photo) # Sets the icon | アイコン 15AppTitle = tk.Label(win, text="TDBT GUI v0.1", fg="white", bg="#52514F", font=('Verdana', 20, 'bold')) 16 17#----Frames | 枠組---- 18FrameOne = tk.LabelFrame(win, text="Input Settings", fg="white", bg="#52514F", padx="20", pady="10") 19FrameTwo = tk.LabelFrame(win, text="Output Settings", fg="white", bg="#52514F", padx="20", pady="10") 20FrameThree = tk.LabelFrame(win, text="Preview", fg="white", bg="#52514F", pady="30", padx="10") 21 22#--Widgets | 特徴---- 23#Input Widgets | 入力 24Text_Input_Path = tk.Label(FrameOne, text="Input Path", fg="white", bg="#52514F", font=('Helvetica', 10)) 25Field_Input_Path = tk.Entry(FrameOne, fg="black", highlightbackground="#52514F") 26Button_Input_Path = tk.Button(FrameOne, text="Open File", highlightbackground="#52514F", font=('Helvetica', 10)) 27 28#Output Widgets | 出力 29Text_Output_Path = tk.Label(FrameTwo, text="Output Path", fg="white", bg="#52514F", font=('Helvetica', 10)) 30Text_Output_Name = tk.Label(FrameTwo, text="Output Filename", fg="white", bg="#52514F", font=('Helvetica', 10)) 31Field_Output_Path = tk.Entry(FrameTwo, fg="black", highlightbackground="#52514F") 32Field_Output_Name = tk.Entry(FrameTwo, fg="black", highlightbackground="#52514F") 33Button_Output_Path = tk.Button(FrameTwo, text="Select Path", highlightbackground="#52514F", pady='2', font=('Helvetica', 10)) 34Extension_Value = tk.StringVar() 35Extension_Value.set(".MOV") #' default value as MOV | デフォルトMOV 36 373Extension_Option = tk.OptionMenu(FrameTwo, Extension_Value)# 38"""Extension_Option.config(bg='#52514F', font=('Helvetica', 10), pady='2')""" 39 40#Preview Widgets | プレビュー 41Preview_Start = tk.Button(FrameThree, text="Start", fg="black", bg="#52514F", font=('Helvetica', 10)) 42 43#---- Button and Text | ボタンとテキスト----- 44ButtonOne = tk.Button(win,text="Previwe", highlightbackground="#52514F", padx=20, pady=10) 45ButtonTwo = tk.Button(win, text="Clear", highlightbackground="#52514F", padx=20, pady=10) 46Button_ffm_simple = tk.Button(win, text="Simple Transcode", highlightbackground="#52514F", padx=20, pady="10") 47TextOutputText = tk.Text(win, height=8, width=110, bg="grey", highlightbackground='grey') 48 49#----Grid | 設計---- 50AppTitle.grid(column=2, row=0, columnspan=5, pady="10") 51 52#Frames | 枠組 53FrameOne.grid(column=2, row=1, padx='10', pady='10', sticky='nsew') 54FrameTwo.grid(column=2, row=2, padx='10', pady='10', sticky='nsew') 55FrameThree.grid(column=3, columnspan=5, row=1, rowspan=6, padx='10', pady='10', sticky='nsew') 56 57#Input | 入力 58Text_Input_Path.grid(column=0, row=0, sticky='w') 59Field_Input_Path.grid(column=1, row=0, sticky='nsew') 60Button_Input_Path.grid(column=2, row=0, sticky='nsew') 61 62#Output | 出力 63Text_Output_Path.grid(column=0, row=0, sticky='w') 64Field_Output_Path.grid(column=1, row=0, sticky='nsew') 65Button_Output_Path.grid(column=2, row=0, sticky='nsew') 66Text_Output_Name.grid(column=0, row=1, sticky='w') 67Field_Output_Name.grid(column=1, row=1, sticky='nsew') 68#Extension_Option.grid(column=2, row=1, sticky='nsew') 69 70#Preview | プレビュー 71Preview_Start.grid(column=3, row=1, sticky='nsew') 72 73#Buttons Grid | 設計のボタン 74ButtonOne.grid(column=2, row=8, sticky='w', pady=1, padx=10) 75ButtonTwo.grid(column=3, row=20, sticky='w', pady=1, padx=10) 76Button_ffm_simple.grid(column=2, row=10, sticky='w', pady=10, padx=10) 77TextOutputText.grid(column=2, columnspan=5, row=11, rowspan=5, sticky='nsew', pady=10, padx=10) 78 79 80#Start the GUI | GUI開始 81win.mainloop() 82

試したこと

ファイルのInput/Output, Button, PreviewなどをHTML,CSSを描くときのようにグループ化してわかりやすくしたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

t_obara

2020/09/11 16:21

まず、ソースを```で囲ってください。
退会済みユーザー

退会済みユーザー

2020/09/11 16:38

用語があまりよくわからないのですが、コメントとして#で記載していた部分を"""に変えさせていただきました。
t_obara

2020/09/11 16:45

質問を投稿する際にテンプレートが出てきたと思うのですが、質問を投稿後にご自身の質問内容をプレビューで確認されるとよろしいかと。全く見易くなっていません。これだと回答がつきにくくなります。 ソース部分全てを```と```で囲うのです。
退会済みユーザー

退会済みユーザー

2020/09/11 16:59

ご親切にありがとうございます。 修正させて頂きました。
guest

回答1

0

ベストアンサー

・Clearボタンを右寄りにしたい

grid()で配置されている以上は、カラムが設定されている為カラムを調整する事が懸命です。
更にstickyオプションもwとなっている為、eにすべきです。

python

1# 75行目 2ButtonTwo.grid(column=5, row=20, sticky='e', pady=1, padx=10)

・Input PathのText欄とOutputのText欄の位置を揃えたい

これに関しては、親フレームがFrameOneFrameTwoとで異なってしまっている為
いくらカラムを合わせようとずれてしまうのは病むを得ません。
原因としてはカラム=0に配置されているLabelのtextの最大文字数が異なるからです。
FrameOneでは、カラム=0に配置されているLabelのtextの最大文字数は10文字です。(半角スペース含む)
そしてFrameTwoではカラム=0に配置されているLabelのtextの最大文字数は15文字です。(半角スペース含む)
簡易的な解決策は文字数をあわせるか、padxを設定する事でしょう。

python

1# 58行目 2Text_Input_Path.grid(column=0, row=0, padx=(0,37), sticky='w')

投稿2020/09/11 18:30

nto

総合スコア1438

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

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

退会済みユーザー

退会済みユーザー

2020/09/14 01:30

教えていただきありがとうございます。 文字数を合わせました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問