理系夫婦の方程式(りけいふうふのほうていしき)です。2019.09.03Python初心者がブログの検索順位取得ツールを作っています。前回は、画面案を作り、とりあえずtkinterでファイル選択ボタンを実装してみました。今回は、作りたい画面の中心的機能である検索キーワード等を表形式に表示する部分を作ってみます。作りたい画面は下の通りです。表は複数の列からなり、チェックボックスを埋め込みたい。スクロールバーを付けたい。この要望がなかなか大変なことになりました。tkinterでチェックボックスを埋め込んだ複数列の表を作り、スクロールバーを付ける方法は、簡単には見つかりませんでしたので、いろいろ組み合わせて自分で実装してみました。あわせて読みたいPython初心者:tkinterでGUI作成~ファイル選択ダイアログ編~Python初心者がブログの検索順位取得ツールを作るために、tkinterを使ってGUI作成にチャレンジしてみました。ボタンを追加してファイル選択ダイアログを表示させ、選択されたファイルのパスを取得します。目次チェックボックス入りの表とスクロールバーを表示するコード今回はtkinterを使って検索キーワードや順位を表形式で表示する部分を作っていきます。背景色をつけるスクロールバー用にFrameとCanvasを設定です。表形式に表示する方法は、ListBoxやTreeviewがあります。ListBoxは複数列ができない、Treeviewは複数列はできるけど、チェックボックスを埋め込めないので、諦めました。(※あくまでも、調べた範囲でやり方が分からなかった)Labelとチェックボックス(checkbutton)をgridで並べることで表のように表示させることにしました。表をスクロールできるようにしたかったため、CanvasやFrameといったwidgetを使用しています。layoutスクロールバーの設定方法⇒Tkinterでスクロールできるようにしたい余談ですが、上記参考ページである「stackoverflow」はプログラミングの難しい課題も解決できちゃうので、めっちゃ参考になります。今回作成部分のソースコードです。表示するデータは、今回は埋め込みでリストを作りました。今後ファイル読み込みでリストを取得する予定。#スクロール可動域<=これがないと、どこまでもスクロールされてしまう。#7行分の長さで設置#スクロールバーの制御をCanvasに通知する処理vbar.config(command=canvas.yview)#Canvasの可動域をスクロールバーに通知する処理canvas.config(yscrollcommand=vbar.set)#スクロール可動域<=これがないと、どこまでもスクロールされてしまう。上記コード、長いので個別の説明は省きます(というか、理解不足でできない)。今回のキモでもあり、少々躓いたgrid機能のみ紹介します。Labelでもチェックボックスでも、画面上のどこに配置するかは「grid」で設定します。object.grid(row=0,column=0)といったように、行(row)と列(column)で指定します。今回、row=0にファイル選択ボタンを配置し、row=1に表のヘッダーを、row=2以降に表の中身を配置しています。column=0がチェックボックス、column=1が検索キーワード、column=2が検索順位、column=3が記事タイトルです。スクロールバーは、vbar.grid(row=1,rowspan=7,column=5,sticky=’ns’)と、row=1から7行にわたって設置。列はcolumn=5としています。column=4だと上手くいきませんでした(謎)。「sticky」オプションで”ns”(上下に引き延ばす)を指定しています。Labelとチェックボックスでは余白の指定もしています。これは背景の色の塗り具合を調整するためです。padxが外側の横の余白padyが外側の縦の余白ipadxが内側の横の余白ipadyが内側の縦の余白です。上記のソースコードを実行してみます。下にスクロールした画面なんとかそれっぽい表が表示されました。スクロールバーも機能しています。ここまで表示できるようになるのに、かなり時間がかかりました。●マウス対応スクロールバーを設置したものの、マウスホイールを動かした場合にスクロールできません。いう機能は別でバインドさせないといけないようです。マウスで動いた方がユーザー的には楽なので、こちらは対応する予定。●表の大きさを可変にしたい現状は表の幅(canvas,frame,label)が固定になっていて、画面のサイズをドラッグで変えた場合に対応できていません。画面の大きさに合わせて表の幅も変えられるようにしたいです。今回作った部分についての課題はとりあえず2つです。あとは他のボタン機能を実装しないと。大変になってきました。いつ完成するのでしょう・・・んじゃ、また~おススメのプログラミング独学方法はこちらの記事にまとめました!あわせて読みたいプログラミングのおススメ独学方法は2パターン(あなたはどっち?)プログラミングを独習する場合、そのパターンは大きく2つに分かれます。網羅的に全体を学習したい場合と、作りたいものが明確な場合です。それぞれのパターンにおススメの勉強方法を、エンジニア歴7年の理系妻が紹介します。お願いします☆にほんブログ村ファミリーランキングこの記事を書いた人まゆみ理系夫婦の妻のほうです。大学、大学院(修士)で物理を専攻。2016年に長女を出産。フルタイム勤務ワーママ→休職中。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。SWELL.検索する。