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

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

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

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

Python

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

受付中

python tkinterでスクロールを実装した際に、スクロールバーにフレームが被さらない事、且つ、フレームが途切れるのを予防したい

qui
qui

総合スコア0

Tkinter

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

Python

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

1回答

-1評価

0クリップ

90閲覧

投稿2022/05/24 06:18

python

### FrameClass class ClassFrame(tk.Frame): def __init__(self , master , bg = None , width = None , height = None): super().__init__(master , bg = bg , width = width , height = height) ### LeftFrameClass class ClassLabelFrameLeft(tk.LabelFrame): def __init__(self , master , text = None , pad_x = None , pad_y = None , bg = None): super().__init__(master , text = text , padx = pad_x , pady = pad_y , bg = bg) ### CanvasClass class ClassCanvas(tk.Canvas): def __init__(self , master , scroll_width , scroll_height , bg): super().__init__(master , bg = bg) bar_y = tk.Scrollbar(self , orient = tk.VERTICAL) bar_x = tk.Scrollbar(self , orient = tk.HORIZONTAL) #self.bind_all("<MouseWheel>" , lambda eve:self.yview_scroll(int(-eve.delta/120) , 'units')) bar_y.pack(side = tk.RIGHT , fill = tk.Y) bar_x.pack(side = tk.BOTTOM , fill = tk.X) bar_y.config(command = self.yview) bar_x.config(command = self.xview) self.config(yscrollcommand=bar_y.set , xscrollcommand=bar_x.set) self.config(scrollregion=(0 , 0 , scroll_width , scroll_height)) self.xview_moveto(0) self.yview_moveto(0) class Model(): def __init__(self): self.width = 1000 self.height = 600 self.leftManu_scroll_max = ({"width": 110, "height": self.height + 300}) self.leftManu_canvas_minimal = (self.leftManu_scroll_max['width'], self.leftManu_scroll_max['height']) self.rightFrame_scroll_max = {"width": self.width - self.leftManu_scroll_max['width'] - 38, "height": self.height + 1000} self.right_canvas_minimal = (self.rightFrame_scroll_max['width'], self.rightFrame_scroll_max['height']) class View(): def __init__(self, master, model): self.master = master self.model = model ### LeftMenu_Frame leftFrame = ClassFrame(self.master, bg="snow", width=self.model.leftManu_scroll_max["width"] + 20) leftFrame.pack(side=tk.LEFT, expand=False, fill=tk.Y) ### canvas self.left_canvas = ClassCanvas(leftFrame, scroll_width=self.model.leftManu_scroll_max["width"], scroll_height=self.model.leftManu_scroll_max["height"], bg="green") self.left_canvas.place(x=0 , y=0 , relheight=1 , relwidth=1) ### canvasFrame self.canvasLeftFrame = tk.Frame(self.left_canvas) self.left_canvas_conf = self.left_canvas.create_window((0,0), window=self.canvasLeftFrame, anchor=tk.NW, width=self.model.leftManu_scroll_max["width"], height=self.model.leftManu_scroll_max["height"]) ### LeftManu_Item self.label_frame_left_menu = ClassLabelFrameLeft(self.canvasLeftFrame , text="MENU", pad_y=7 , bg='snow') self.label_frame_left_menu.place(x=0, y=0, width=self.model.leftManu_scroll_max["width"]) leftBottons = ['sample1','sample2','sample3','sample4','sample5','sample6','sample7','sample8','sample9','sample10', 'sample11','sample12','sample13','sample14','sample15','sample16','sample17','sample18','sample19','sample20','sample21','sample22','sample23',] ### LeftFrameButton for text in leftBottons: left_button = tk.Button(self.label_frame_left_menu, text = text, command='') left_button.pack(anchor=tk.NW, fill=tk.X, padx=(10 , 10), pady=(0 , 10)) class Controller(): def __init__(self, master, model, view): self.master = master self.model = model self.view = view def left_canvas_resize(event): self.view.left_canvas.itemconfigure(self.view.left_canvas_conf, width=event.width-19.5, height=event.height-19.5) self.view.left_canvas.bind("<Configure>", left_canvas_resize) class Application(tk.Frame): def __init__(self, master): super().__init__(master) self.pack() self.model = Model() master.geometry(str(self.model.width) + "x" + str(self.model.height)) master.title("tkinter template") self.view = View(master, self.model) self.controller = Controller(master, self.model, self.view) def main(): window = tk.Tk() app = Application(master=window) app.mainloop() if __name__ == "__main__": main()

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Tkinter

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

Python

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