auの日記

プログラミング初心者の日記。(auはハンドルネームです)

tkinterを使ってプログラミング

auです。
さっきからflaskrでsqlをやろうとしてもうんともすんともいわないのでtkinterというGUIのアプリケーションを作れる方をやっていきたいと思います。sqlまじで難しい。
f:id:program-shoshinsya:20180313231437p:plain

それと、今日PCのメモリを増設したのですが、このメッセージがでてファイルからプログラム指定でAtomが開けなくなってしまいました。ggっても分からないので分かる人教えていただきたいです。

無駄話が多くなってしまいましたが、プログラミングをしていきたいと思います。
tkinterは、importで使えるモジュールです。

import tkinter as tk
base = tk.Tk()
base.mainloop()

これを入力し、Atomで実行しようとしても

Atom Runner: tkinter.py

Traceback (most recent call last):
  File "C:\Users\satoukouhei\Documents\Intern\tkinter\tkinter.py", line 1, in <module>
    import tkinter as tk
  File "C:\Users\satoukouhei\Documents\Intern\tkinter\tkinter.py", line 2, in <module>
    base = tk.Tk()
AttributeError: module 'tkinter' has no attribute 'Tk'

とでてしまい、開けなかったので、今回は別のテキストエディタである「IDLE」を使っていこうと思います。
上のPythonの文をIDLEで実行すると
f:id:program-shoshinsya:20180313232829p:plain
こんなウィンドウがでると思います。
最後の文

base.mainloop()

これは、ベースとなる画面の表示を維持するためです。これがなくても「あ、開けるじゃん」となるかもしれませんが、ファイルに書き込んで実行するとき、アプリケーションは実行されますが、画面が維持されずに消えてしまいます。
実際にボタンを配置してみます

import tkinter  as tk
base = tk.Tk()
button = tk.Button(base, text="PUSH!")
button.pack()

f:id:program-shoshinsya:20180313234501p:plain
PUSH!と書かれたボタンがでてきました。
3行目でButtonというクラスをインスタンス化しています。
tkinterでは、Buttonなどの部品ごとにクラスが容易されていて、それらをインスタンス化することで使用することができます。

tk.部品のクラス(親のインスタンス, 設定1=xx, 設定2=xx)

こういう風に書いていきます。

button.pack()

これは、部品を上から順番に並べていくというメソッドです。

本来はflaskrでsqlをして、実際にネットでみてみようというのを想定していたのですが、やろうとしたら難しかったです。またリベンジしてみます。