前提・実現したいこと
pythonの初心者です。
tkinterでメニュー画面を作っています。
アップimageよりblueのフレームが画面高になりません
又コントロール配置がpack、gridで制御出来ていません
ご指導願います。
それと、その先ですが画面にcontrol-frameとcanvas-frameを
設けていますが、buttonのon/offでcontrol-frameの左右スライド
(視覚的スライドにコントロールフレームwidthtを縮めてゼロに、同時にcontrol-frameを広げる)
を考えていますが可能でしょうか併せてご指導ください。
下記のページから引用してます
https://daeudaeu.com/play_movie/
アップコードは関連場所のみとしています。
発生している問題・エラーメッセージ
該当のソースコード
python
1import tkinter as tk 2from tkinter import ttk 3import tkinter.messagebox as msgbox 4from PIL import Image, ImageTk 5 6class Model(): 7 def __init__(self): 8 # 読み込んだフレーム 9 self.frames = None 10 11class View(): 12 def __init__(self, app, model): 13 self.master = app 14 self.model = model 15 # アプリ内のウィジェットを作成 16 self.create_widgets() 17 18 # クリックされたら実行 19 def btn_click(self): 20 msgbox.showinfo("クリックイベント", "が入力されました。") 21 22 def create_widgets(self): 23 # キャンバスのサイズ 24 canvas_width = 800 25 canvas_height = 480 26 27 # メインフレームの作成と配置 28 self.main_frame = tk.Frame(self.master,bg="yellow") 29 self.main_frame.pack() 30 31 # コマンドフレームの作成と配置 32 self.operation_frame = tk.Frame(self.main_frame,bg="blue") 33 self.operation_frame.grid_propagate(1) 34 self.operation_frame.grid(column=0, row=1) 35 36 # 映像フレームの作成と配置 37 self.canvas_frame = tk.Frame(self.main_frame) 38 self.canvas_frame.grid(column=1, row=1) 39 40 # 映像キャンバスの仕様 41 self.canvas = tk.Canvas( 42 self.canvas_frame, 43 width=canvas_width, 44 height=canvas_height, 45 bg="black") 46 self.canvas.pack() 47 48 # info_Label 49 la = ttk.Label(self.operation_frame, 50 text="メニュー選択", 51 width=10, 52 font=("Meiryo UI", 12, "bold")) 53 la.pack(padx=10, pady=10, side=tk.TOP) 54 #la.grid( column=0, row=0, padx=50, pady=10, ipadx=0) 55 #la.place(relx=0.05, rely=0.05) # 横0.05、縦0.1の位置に配置 56 57 # selectFile_Combobox 58 List = ['all select', 'folder1', 'folder2', 'folder3'] 59 str = tk.StringVar() 60 cmb = ttk.Combobox( 61 self.operation_frame, 62 values=List, 63 width=10, 64 font=("Meiryo UI", 12), 65 textvariable=str, 66 state='readonly') 67 cmb.set(List[0]) 68 cmb.bind('<<ComboboxSelected>>',lambda e: print('str=%s' % str.get())) 69 #cmb.bind('<<ComboboxSelected>>', selectFile_changed) 70 #cmb.grid(row=1, column=0, padx=5, pady=5) 71 #cmb.pack(padx=20, pady=10, anchor=tk.W) 72 cmb.pack(padx=20, pady=10, side=tk.TOP) 73 74 # Order_Radiobutton 75 rb1 = tk.Radiobutton( 76 self.operation_frame, 77 value=0, 78 text="shuffle", 79 width=10, 80 bg="Lightblue", 81 font=("Meiryo UI", "12")) 82 rb1.select() 83 #rb1.grid(column=0, row=2, padx=0, pady= 10, ipadx=0) 84 #rb1.place(relx=0.05, rely=0.35) 85 #rb1.pack(padx=20, anchor = tk.NW) 86 rb1.pack(padx=20, pady=10, side=tk.TOP) 87 88 # Order_Radiobutton 89 rb2 = tk.Radiobutton( 90 self.operation_frame, 91 value=1, 92 bg="Lightblue", 93 font=("Meiryo UI", "12"), 94 text="normal", 95 width=10) 96 rb2.deselect() 97 #rb2.grid(column=0, row=3, padx=0, pady= 10, ipadx=0) 98 #rb2.place(relx=0.05, rely=0.50) 99 #rb2.pack(padx=20, anchor = tk.W) 100 rb2.pack(padx=20, pady=10, side=tk.TOP) 101 102 # load_button 103 image1 = Image.open('./inifile/start.png') 104 image1 = image1.resize(size=(46, 43)) 105 self.img1 = ImageTk.PhotoImage(image1) 106 self.btn1 = tk.Button( 107 self.operation_frame, 108 image=self.img1, 109 relief="flat", 110 command = self.btn_click) 111 #self.btn1.grid(column=0, row=4, padx=0, pady= 10, ipadx=0) 112 #self.btn1.place(relx=0.05, rely=0.65) 113 #self.btn1.pack(padx=20, pady=10, anchor=tk.W) 114 self.btn1.pack(padx=20, pady=10, side=tk.TOP) 115 116 # exit_button 117 image2 = Image.open('./inifile/exit.png') 118 image2 = image2.resize(size=(46, 43)) 119 self.img2 = ImageTk.PhotoImage(image2) 120 self.btn2 = tk.Button( 121 self.operation_frame, 122 image=self.img2, 123 relief="flat", 124 command = self.btn_click) 125 #self.btn2.grid(column=0, row=5, padx=10, pady= 10, ipadx=10) 126 #self.btn2.place(relx=0.05, rely=1.80) 127 self.btn2.pack(padx=20, pady=10, side=tk.TOP) 128 129if __name__ == "__main__": 130 app = tk.Tk() 131 app.title("Digital Photo Slide view") 132 model = Model() 133 view = View(app, model) 134 # controller = Controller(app, model, view) 135 app.mainloop()
試したこと
補足情報(FW/ツールのバージョンなど)
--環境--
python3.8
tkinter8.6
pycharm2021.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/26 10:31
2021/05/26 11:02
2021/05/26 12:07
2021/05/27 00:25
2021/05/27 00:47