🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Tkinter

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

ウィジェット

ウィジェットとはユーザインタフェイスの要素(GUI widget)であるか、もしくは、独立した比較的サイズの小さいソフトウェアアプリケーション(desktop widget)のことを指します。

Python

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

Q&A

解決済

2回答

1730閲覧

pythonのtkinterを使用したgui作成時の.placeの使用方法を教えてください。

python_k

総合スコア7

Tkinter

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

ウィジェット

ウィジェットとはユーザインタフェイスの要素(GUI widget)であるか、もしくは、独立した比較的サイズの小さいソフトウェアアプリケーション(desktop widget)のことを指します。

Python

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

0グッド

0クリップ

投稿2021/03/27 06:57

編集2021/03/27 13:54

前提・実現したいこと

tkinterを使って指定した日付のデータを検索して保存するguiを作成してみようと考えています。

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

.placeを使いウィジェットを配置しようとしたところスピンボックスだけ表示されません。
また新しくウィンドウを作成して.placeでウィジェットを配置しようとしたところそちらではラベルやテキストボックスも表示されせん。
どこか記述の間違いや漏れがあったりしますでしょうか?
よろしくお願いします。

該当のソースコード

python

1import tkinter 2from tkinter import * 3from tkinter import ttk 4import datetime 5import tkinter.filedialog 6import os,sys 7 8class MainMenu(tkinter.Frame): 9 def __init__(self,master): 10 super().__init__(master,width=450,height=400) 11 self.pack() 12 self.master.title('data') 13 self.master.minsize() 14 self.CreateWindow() 15 16 def CreateWindow(self): 17 self.sptxt1=tkinter.StringVar() 18 self.sptxt2=tkinter.StringVar() 19 self.sptxt3=tkinter.StringVar() 20 self.sptxt4=tkinter.StringVar() 21 self.sptxt5=tkinter.StringVar() 22 self.sptxt6=tkinter.StringVar() 23 self.stlbl=tkinter.Label(self,text='from') 24 self.endlbl=tkinter.Label(self,text='to') 25 self.datelbl1=tkinter.Label(self,text='/') 26 self.datelbl2=tkinter.Label(self,text='/') 27 self.styear=tkinter.Spinbox(self,textvariable=self.sptxt1,from_=2021,to=2999,increment=1,state='readonly',width=20) 28 self.stmonth=tkinter.Spinbox(self,textvariable=self.sptxt2,from_=1,to=12,increment=1,state='readonly',width=10) 29 self.stday=tkinter.Spinbox(self,textvariable=self.sptxt3,from_=1,to=31,increment=1,state='readonly',width=10) 30 self.datelbl3=tkinter.Label(self,text='/') 31 self.datelbl4=tkinter.Label(self,text='/') 32 self.endyear=tkinter.Spinbox(self,textvariable=self.sptxt4,from_=2021,to=2999,increment=1,state='readonly',width=20) 33 self.endmonth=tkinter.Spinbox(self,textvariable=self.sptxt5,from_=1,to=12,increment=1,state='readonly',width=10) 34 self.endday=tkinter.Spinbox(self,textvariable=self.sptxt6,from_=1,to=31,increment=1,state='readonly',width=10) 35 36 self.sttime=tkinter.Entry(self,width=20) 37 self.endtime=tkinter.Entry(self,width=20) 38 39 self.stlbl.place(x=10,y=20) 40 self.styear.place(x=40,y=60,width=80,height=30) 41 self.datelbl1.place(x=120,y=60) 42 self.stmonth.place(x=140,y=60,width=60,height=30) 43 self.datelbl2.place(x=200,y=60) 44 self.stday.place(x=220,y=60,width=60,height=30) 45 self.sttime.place(x=300,y=60,width=80,height=30) 46 47 self.endlbl.place(x=10,y=120) 48 self.endyear.place(x=40,y=160,width=80,height=30) 49 self.datelbl3.place(x=120,y=160) 50 self.endmonth.place(x=140,y=160,width=60,height=30) 51 self.datelbl4.place(x=200,y=160) 52 self.endday.place(x=220,y=160,width=60,height=30) 53 self.endtime.place(x=300,y=160,width=80,height=30) 54 55 self.button1=ttk.Button( 56 text='OK', 57 padding=(20,5), 58 command=self.getText) 59 self.button2=ttk.Button( 60 text='cancel', 61 padding=(20,5), 62 command=self.quitWindow) 63 64 self.button1.place(x=300,y=240) 65 self.button2.place(x=300,y=270) 66 67 self.inputRule() 68 69 def inputRule(self): 70 self.var1=tkinter.StringVar() 71 self.stlbl["font"]=("",20) 72 self.styear["font"]=("",20) 73 self.stmonth["font"]=("",20) 74 self.stday["font"]=("",20) 75 self.datelbl1["font"]=("",20) 76 self.datelbl2["font"]=("",20) 77 self.var1.set("00:00") 78 self.sttime["text"]=self.var1 79 self.sttime["font"]=("",20) 80 81 self.var2=tkinter.StringVar() 82 self.endlbl["font"]=("",20) 83 self.endyear["font"]=("",20) 84 self.endmonth["font"]=("",20) 85 self.endday["font"]=("",20) 86 self.datelbl3["font"]=("",20) 87 self.datelbl4["font"]=("",20) 88 self.var2.set("23:59") 89 self.endtime["text"]=self.var2 90 self.endtime["font"]=("",20) 91 def getText(self): 92 date1=self.styear.get()+ '/'+ self.stmonth.get()+ '/'+ self.stday.get()+ ' '+self.sttime.get() 93 date2=self.endyear.get()+ '/'+self.endmonth.get()+ '/'+ self.endday.get()+' '+self.endtime.get() 94 #data_output(date1,date2) 95 self.CreateNewWindow() 96 97 def quitWindow(self): 98 self.master.destroy() 99 100 101 102 def CreateNewWindow(self): 103 win2=tkinter.Toplevel(self.master) 104 app=NewWindow(win2) 105 win2.attributes('-topmost',True) 106 win2.grab_set() 107 108 109class NewWindow(tkinter.Frame): 110 def __init__(self,master): 111 112 super().__init__(master,width=400,height=200) 113 self.pack() 114 self.master.title('save') 115 116 self.create_save() 117 118 def create_save(self): 119 120 self.save_path=tkinter.Entry(self,width=20) 121 self.save_path.place(x=10,y=10,height=30,width=210) 122 self.path_button=ttk.Button( 123 self, 124 text='フォルダーの選択', 125 padding=(20,5), 126 command=self.GetPath) 127 self.path_button.place(x=230,y=10) 128 self.file_name=tkinter.Entry(self,width=20) 129 self.file_name.place(x=10,y=50,height=30,width=210) 130 self.file_name_tag=tkinter.Label(self,text="ファイル名") 131 self.file_name_tag.place(x=230,y=50) 132 self.file_save_button=ttk.Button( 133 self, 134 text='保存', 135 padding=(20,5), 136 command=self.file_save) 137 self.file_save_button.place(x=165,y=100) 138 self.button5=ttk.Button( 139 self, 140 text='cancel', 141 padding=(20,5), 142 command=self.quitWindow2) 143 self.button5.place(x=280,y=100) 144 145 def GetPath(self): 146 self.dir = 'C:\' 147 self.fld = tkinter.filedialog.askdirectory(initialdir = self.dir) 148 self.var=tkinter.StringVar() 149 self.var.set(self.fld) 150 self.save_path["text"]=self.var 151 152 def file_save(self): 153 self.file_path_name=self.save_path.get()+'/'+self.file_name.get()+'.csv' 154 print(self.file_path_name) 155 156 def quitWindow2(self): 157 self.master.destroy() 158 159 160def main(): 161 root=tkinter.Tk() 162 app=MainMenu(master=root) 163 app.mainloop() 164 165if __name__=="__main__": 166 main()

試したこと

https://teratail.com/questions/188436
こちらの質問に似た症状だったたため試してみたのですが表示は変わらすでした。

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

ウィンドウを表示するコードになります。
データを検索するプログラムをCreateWindowのクラス内に入れていたのですが、そちらを削除したところスピンボックスの方は表示されるようになりました。
visualstudioの方で編集実行していたのですが、pythonから実行したところスピンボックスの方は一つも表示されないという状態です。
新しく開くウィンドウの方は無事表示されるようになりました。

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

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

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

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

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

teamikl

2021/03/27 07:50 編集

実行可能なソースコードを掲載してください。 - StringVar, Spinbox クラスの import - getText, quitWindow, GetPath メソッドが未定義 - 呼び出し部分 (mainloop) がありません。
guest

回答2

0

ベストアンサー

CreateNewWindowを呼び出している部分がありませんが、表示に関する部分は、
ラベルを配置している親フレームの表示が行われていない為だと思います。

diff

1# NewWindow クラス内 2- self.pack 3+ self.pack()

同様に、StringVar も呼び出されてません。
また、StringVar の用法に誤りがあります。

  • StringVar が未定義
  • StringVar が呼ばれていない。→ StringVar() 呼び出しの括弧
  • year/month/day で同じ 変数を参照している。
  • sptext はローカル変数にすると、関数終了時に破棄されます

 → インスタンス変数にすることで回避 self.sptext = tkinter.StringVar()

投稿2021/03/27 08:09

teamikl

総合スコア8738

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

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

python_k

2021/03/27 10:33

回答ありがとうございます。 StringVarの使い方がよく理解できていなかったため編集しました。 新しく開くウィンドウの方は無事表示されるようになりました。ありがとうございます。
teamikl

2021/03/27 11:27 編集

inputRule関数内 self.var=tkinter.StringVar() self.sttime["text"]=self.var # ここで以前の StringVar を保存…したつもりだと思いますが self.var=tkinter.StringVar() # 以前の self.var にあった StringVar は、関数を抜けた後に破棄される self.endtime["text"]=self.var 恐らく後で値を変更したい場合に困るので、self.var の部分は それぞれ別のインスタンス変数に別ける必要がります。
teamikl

2021/03/27 12:57

>スピンボックスの方は一つも表示されないという状態です。 原因: 変更により Spinbox の textvariable=self.sptxt, がなくなったためですね。 最初のコードでは全て 年 のデータが表示されていたはずです。 - StringVar -> 数値なので、代わりに IntVar を使えます。 - textvariable に指定する変数は、各Spinbox に一つづつ(合計6個)必要です。  年・月・日をクラスでグループ化すれば、コード上は3つに纏められます。
python_k

2021/03/27 13:14

回答ありがとうございます。 inpuRule内変更させていただきました。 スピンボックスの方なのですが変更してみたもののまだ表示されない状態です。 何か記述の間違いなどありますでしょうか?
teamikl

2021/03/27 13:40 編集

もう一点は Spinbox の親ウィジェットが 最初のコードでは root (何も指定なしの場合は root が親になります) 現在のコードでは self (MainMenuのFrame) になってます。 以前の状態に戻すには、tkinter.Spinbox(self,textvariable= ... の最初の self の部分を削除。 ですが、正常な構成にする場合は、Frame のサイズが得られ無い状態なので、 質問に掲載のURLの問題に該当する状態です。 https://teratail.com/questions/188436 >こちらの質問に似た症状だったたため試してみたのですが表示は変わらすでした。 (grid/pack を使う場合は、サイズ計算を任せられますが、  placeでの配置では自分で調整する必要があります) 加えて、Spinbox は親ウィジェットが self (Frame) ですが、 他のウィジェット Label, Button 等は指定なしになってるので、統一した方が良いです。
python_k

2021/03/27 14:02

ありがとうございます。 無事すべて表示させることができました。 まだpythonを学び始めたばかりだったので丁寧に説明していただき本当に助かりました。
python_k

2021/03/27 14:06

もう一つ質問なのですが、 win2.attributes('-topmost',True) でウィンドウを最前面に固定した状態で tkinter.filedialog.askdirectory をすると固定したウィンドウの方がディレクトリ選択のウィンドウより前面で固定されたままになってしまうのですがどのようにしたら解決できますでしょうか?
teamikl

2021/03/27 14:37 編集

ウィンドウの親子関係にもよりますが、(どちらか) - win2.attributes('-topmost', False) # 事前に topmost を解除する。後で再設定。 - .askdirectory(parent=win2) # ダイアログの親ウィンドウを指定する
python_k

2021/03/27 15:15

ありがとうございます。 二番目の方を試してみたところできました。 今回はお世話になりました。
guest

0

おはようございます。

問題文読ませていただきました。

こんな感じでいかがでしょうか?

python

1import tkinter 2from tkinter import * 3from tkinter import ttk 4import tkinter.filedialog 5 6class MainMenu(tkinter.Frame): 7 def __init__(self,master): 8 # Windowの初期設定を行う。 9 super().__init__(master) 10 # Windowへタイトルをつける。 11 self.master.title('data') 12 13 self.createWidget() 14 15 def createWidget(self): 16 # spinbox用の文字列変数を用意する。 17 # StringVar()について : https://kuroro.blog/python/K53voPjJuKFfYrjmP8FP/ 18 self.sptxt1 = tkinter.StringVar() 19 self.sptxt2 = tkinter.StringVar() 20 self.sptxt3 = tkinter.StringVar() 21 self.sptxt4 = tkinter.StringVar() 22 self.sptxt5 = tkinter.StringVar() 23 self.sptxt6 = tkinter.StringVar() 24 25 # Windowを親要素として、frame Widget(Frame)を作成する。 26 # width : 幅の設定 27 # height : 高さの設定 28 # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/ 29 frame = tkinter.Frame(self.master, width=450, height=400) 30 # Windowを親要素として、frame Widget(Frame)をどのように配置するのか? 31 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ 32 frame.pack() 33 34 # frame Widget(Frame)を親要素として、label Widgetを作成する。 35 # text : テキスト情報 36 # font : フォントの設定 37 # labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/ 38 self.stlbl = tkinter.Label(frame, text='from', font=("", 20)) 39 self.endlbl = tkinter.Label(frame, text='to', font=("", 20)) 40 41 # frame Widget(Frame)を親要素として、label Widgetを作成する。 42 # text : テキスト情報 43 # font : フォントの設定 44 # labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/ 45 self.datelbl1 = tkinter.Label(frame, text='/', font=("", 20)) 46 self.datelbl2 = tkinter.Label(frame, text='/', font=("", 20)) 47 48 # frame Widget(Frame)を親要素として、spinbox Widgetを作成する。 49 # textvariable : テキストボックスに格納される入力値を、変数で管理するための設定 50 # from_ : 入力値の下限設定 51 # to : 入力値の上限設定 52 # increment : ???? or ???? ボタンの入力増減幅を設定 53 # state : spinbox Widgetの状態を設定 54 # width : 幅設定 55 # font : フォントの設定 56 # Spinboxについて : https://kuroro.blog/python/CQZWZZXhhyD3B1TWP3FN/ 57 self.styear = tkinter.Spinbox(frame, textvariable = self.sptxt1, from_ = 2021, to = 2999, increment = 1, state = 'readonly', width = 20, font = ("", 20)) 58 self.stmonth = tkinter.Spinbox(frame, textvariable = self.sptxt2, from_ = 1, to = 12, increment = 1, state = 'readonly', width = 10, font = ("", 20)) 59 self.stday = tkinter.Spinbox(frame, textvariable = self.sptxt3, from_ = 1,to = 31, increment = 1, state = 'readonly', width = 10, font = ("", 20)) 60 61 # frame Widget(Frame)を親要素として、label Widgetを作成する。 62 # text : テキスト情報 63 # font : フォントの設定 64 # labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/ 65 self.datelbl3 = tkinter.Label(frame, text = '/', font=("", 20)) 66 self.datelbl4 = tkinter.Label(frame, text = '/', font=("", 20)) 67 68 self.endyear = tkinter.Spinbox(frame, textvariable = self.sptxt4, from_ = 2021, to = 2999, increment = 1, state = 'readonly', width = 20, font=("", 20)) 69 self.endmonth = tkinter.Spinbox(frame, textvariable = self.sptxt5, from_ = 1, to = 12, increment = 1, state = 'readonly', width = 10, font=("", 20)) 70 self.endday = tkinter.Spinbox(frame, textvariable = self.sptxt6, from_ = 1, to = 31, increment = 1, state = 'readonly', width = 10, font=("", 20)) 71 72 # entry Widget用の文字列変数を用意する。 73 # StringVar()について : https://kuroro.blog/python/K53voPjJuKFfYrjmP8FP/ 74 self.var1 = tkinter.StringVar() 75 self.var2 = tkinter.StringVar() 76 # entry Widgetへ初期化を施す。 77 self.var1.set("00:00") 78 self.var2.set("23:59") 79 80 # frame Widget(Frame)を親要素として、entry Widgetを作成する。 81 # width : 幅の設定 82 # font : フォントの設定 83 # textvariable : テキストボックスに格納される入力値を、変数で管理するための設定 84 # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/ 85 self.sttime = tkinter.Entry(frame, width=20, font=("", 20), textvariable=self.var1) 86 self.endtime = tkinter.Entry(frame, width=20, font=("", 20), textvariable=self.var2) 87 88 # frame Widget(Frame)を親要素として、button Widgetを作成する。 89 # text : テキスト情報 90 # padding : x軸, y軸方向へ空白の幅を持たせる設定。(x軸, y軸) 91 # command : ボタンをクリックした時に実行する関数を設定 92 # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/ 93 self.button1 = ttk.Button(frame, text='OK', padding=(20, 5), command=self.getText) 94 self.button2 = ttk.Button(frame, text='cancel', padding=(20, 5), command=self.quitWindow) 95 96 self.initPosition() 97 98 # frame Widget(Frame)を親要素として、Widgetの初期位置を設定する関数 99 # placeについて : https://kuroro.blog/python/JyaHUKyFyxCa0baFfXg0/ 100 def initPosition(self): 101 self.stlbl.place(x=10, y=20) 102 self.endlbl.place(x=10, y=120) 103 104 self.datelbl1.place(x=120, y=60) 105 self.datelbl2.place(x=200, y=60) 106 107 self.styear.place(x=40, y=60, width=80, height=30) 108 self.stmonth.place(x=140, y=60, width=60, height=30) 109 self.stday.place(x=220, y=60, width=60, height=30) 110 111 self.datelbl3.place(x=120, y=160) 112 self.datelbl4.place(x=200, y=160) 113 114 self.endyear.place(x=40, y=160, width=80, height=30) 115 self.endmonth.place(x=140, y=160, width=60, height=30) 116 self.endday.place(x=220, y=160, width=60, height=30) 117 118 self.sttime.place(x=300, y=60, width=80, height=30) 119 self.endtime.place(x=300, y=160, width=80, height=30) 120 121 self.button1.place(x=300, y=240) 122 self.button2.place(x=300, y=270) 123 124 # Windowを破棄する関数 125 def quitWindow(self): 126 self.master.destroy() 127 128 # 日付入力が完了して、ボタンをクリックした際に実行される関数 129 def getText(self): 130 # サブWindowを作成する。 131 self.createSubWindow( 132 self.styear.get() + '/' + self.stmonth.get() + '/' + self.stday.get() + ' ' + self.sttime.get(), 133 self.endyear.get() + '/' + self.endmonth.get() + '/' + self.endday.get() + ' ' + self.endtime.get() 134 ) 135 136 def createSubWindow(self, date1, date2): 137 # メインWindowに紐づくサブWindowを作成する。 138 # Toplevelについて : https://kuroro.blog/python/kEE4RwgYN45V0lM92SDM/ 139 win2 = tkinter.Toplevel(self.master) 140 141 SubWindow(win2, date1, date2) 142 # サブWindowを一番上へ表示する。 143 win2.attributes('-topmost', True) 144 # メインWindowへの選択を不能にする。 145 win2.grab_set() 146 147 148class SubWindow(tkinter.Frame): 149 def __init__(self,master, date1, date2): 150 # サブWindowの初期設定を行う。 151 super().__init__(master) 152 # サブWindowへタイトルをつける。 153 self.master.title('save') 154 155 self.createSave(date1, date2) 156 157 # サブWindowを破棄する関数 158 def quitSubWindow(self): 159 self.master.destroy() 160 161 # ファイル保存する関数 162 def fileSave(self): 163 self.file_path_name = self.save_path.get() + '/' + self.file_name.get() + '.csv' 164 print(self.file_path_name) 165 166 # フォルダパスを設定する関数 167 def setFolderPath(self): 168 self.fld = tkinter.filedialog.askdirectory(initialdir='C:\') 169 self.var.set(self.fld) 170 171 def createSave(self, date1, date2): 172 # サブWindowを親要素として、frame Widget(Frame)を作成する。 173 # width : 幅の設定 174 # height : 高さの設定 175 # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/ 176 frame = tkinter.Frame(self.master, width=450, height=400) 177 frame.pack() 178 179 # entry Widget用の文字列変数を用意する。 180 # StringVar()について : https://kuroro.blog/python/K53voPjJuKFfYrjmP8FP/ 181 self.var = tkinter.StringVar() 182 # entry Widgetへ初期化を施す。 183 self.var.set('') 184 185 # frame Widget(Frame)を親要素として、entry Widgetを作成する。 186 # width : 幅の設定 187 # textvariable : テキストボックスに格納される入力値を、変数で管理するための設定 188 # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/ 189 self.save_path = tkinter.Entry(frame, width=20, textvariable=self.var) 190 self.save_path.place(x=10, y=10, height=30, width=210) 191 192 # frame Widget(Frame)を親要素として、button Widgetを作成する。 193 # text : テキスト情報 194 # padding : x軸, y軸方向へ空白の幅を持たせる設定。(x軸, y軸) 195 # command : ボタンをクリックした時に実行する関数を設定。 196 # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/ 197 self.path_button = ttk.Button(frame, text='フォルダーの選択', padding=(20, 5), command=self.setFolderPath) 198 self.path_button.place(x=230, y=10) 199 200 # frame Widget(Frame)を親要素として、entry Widgetを作成する。 201 # width : 幅の設定 202 # Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/ 203 self.file_name = tkinter.Entry(frame, width=20) 204 self.file_name.place(x=10, y=50, height=30, width=210) 205 206 # frame Widget(Frame)を親要素として、label Widgetを作成する。 207 # text : テキスト情報 208 # labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/ 209 self.file_name_tag = tkinter.Label(frame, text="ファイル名") 210 self.file_name_tag.place(x=230, y=50) 211 212 # frame Widget(Frame)を親要素として、button Widgetを作成する。 213 # text : テキスト情報 214 # padding : x軸, y軸方向へ空白の幅を持たせる設定。(x軸, y軸) 215 # command : ボタンをクリックした時に実行する関数を設定。 216 # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/ 217 self.file_save_button = ttk.Button(frame, text='保存', padding=(20, 5), command=self.fileSave) 218 self.file_save_button.place(x=165, y=100) 219 220 self.button5 = ttk.Button(frame, text='cancel', padding=(20, 5), command=self.quitSubWindow) 221 self.button5.place(x=280, y=100) 222 223def main(): 224 # Windowを作成する。 225 root = tkinter.Tk() 226 227 app = MainMenu(master=root) 228 229 # Windowをループさせて、継続的にWindow表示させる。 230 # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/ 231 app.mainloop() 232 233if __name__=="__main__": 234 main()

ご確認のほど、よろしくお願いいたします。????‍♂️

投稿2021/06/17 22:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問