お気楽Python/Tkinter入門, tkinterでは、標準でpngやjpgといったイメージファイル形式には対応していません, そこで、ここではtkinterの標準の画像表示でない方法を使って解決します。

tkinterで画像を表示させる今回の記事は、「tkinterでpngやjpgなどのgif以外の画像を表示させる方法」です。結論から言います。解決方法は、PILのImageとImageTkを使うことです。それでは、画像を表示させていきましょ PythonでPillowを使ってクリップボードから画像データを取得します。そして、取得したデータをtkinterのcanvasに貼り付けます。 (function() {var s=document.getElementsByTagName('script')[0],js=document.createElement('script');js.type='text/javascript';js.async='async';js.src='https://analyze.pro.research-artisan.com/track/script.php';s.parentNode.insertBefore(js,s);})(); PythonのGUIのtkinterを使う方法2 ラベルとエデットボックスの設置方法.

# frame['bg'] = '#FF00FF', # , # button = tk.Button(root, text='Hello', width=10) 横幅400,縦幅266の画像ファイルを使って表示させています。, キャンバスのオブジェクト=Canvas( bg=色を表す文字列 , width=横幅pixel , height=縦幅pixel), キャンバスを作成します。 テキスト内で改行コードを使いレコード分けしている文字列を取得するのに向いています。. (adsbygoogle = window.adsbygoogle || []).push({}); このサンプルの場合表示はこのような物になります。 # frame = tk.Frame(root, bg='#FF00FF') tkinterのリファレンスより引用, 残念ながら、jpegは対応していません。 高性能というわけではない(透過まわりや標準機能面で不便な点あり)が、標準なので備忘録として自分用にまとめておく。, # Ctrl+Cで終了しようとすると、Windowにさわるまで応答しないのが面倒くさい, root.mainloop()でブロックする。Windowが閉じられるとMain loopを抜ける。, 正確には、TkはWindowというよりTkinterのメインループを管理するもののようだ。モーダルなどを使うためマルチウインドウ化するときはtk.Toplevelで第2、第3のWindowを作成できる(Form=VB.NET、Frame=Javaに相当)。Javaの場合、勝手にGUI用のループを実行するスレッドが立つ(main関数を実行するMain Threadが終了しても生き続ける)ものだったと思うので気にしたことはなかったが、Tkinterの場合明示的に管理するらしい。, (tk.Toplevelを使用していて)Tk自体がRoot windowとして存在しているのがわずらわしい場合、root.withdraw()で消すことができる。が、「Windowが閉じられた=Main loopを終了=プログラムを終了」のロジックが働かなくなることになる(SwingのDefaultCloseOperationを思わせる)ので、Main loopを終了するためアプリケーション終了時にroot.destroy()を呼び出す。, tk.ToplevelによりWindowを表示し、特定のWindowが閉じられたときMain loopが終了するようにする。, windowが閉じられたことはwindow.protocol('WM_DELETE_WINDOW', handler_func)(SwingのWindowListener#windowClosingに相当)で検出できる。, 結局のところ、1枚のWindow+モーダルのようなアプリケーションでは素直にTkをメインのWindowとして扱ったほうがコードが単純になるだろう。, Panel(VB.NET/Java)/UIView(iOS)/ViewGroup(Android)的なやつ。Widgetのコンストラクタにbgとしてカラーコードを渡すと背景色を設定できる。初期化後に背景色を設定したい場合はディスクリプタ経由(widget['bg'])で設定できる。, Label(VB.NET/Java)/UILabel(iOS)/TextView(Android)的なやつ。, Widgetのコンストラクタにwidthを渡せるが、単位がpixelでなくわかりにくい(文字数?)。, bindでイベントハンドラを登録できる。はマウスボタンのクリックを表す(ややこしいが、Widgetのtk.Buttonとは関係ない)。は左クリック、は中クリック、は右クリック。event.numにはボタン番号が入る(左クリックのときevent.num=1、右クリックのときevent.num=3。まぎらわしいが、クリック回数ではない)。また