More Related Content
Similar to 200918 hannari-python (20)
More from Takuya Nishimoto (20)
200918 hannari-python
- 2. おまえ誰よ
• 京都(1996年~2002年)→ 現在は広島
• NVDA日本語チーム www.nvda.jp
• PyCon mini Hiroshima → 2020年10月10日オンライン開催
• PyCon JP 2020 でコミュニティの話をした
• すごい広島 with Pythonで「標準ライブラリなLT会」を紹介された
• ソース
• tkinterの話題
• https://gist.github.com/nishimotz/ca2d5eac2002b908a7da3aaa2f162f48
• まわり将棋
• https://gist.github.com/nishimotz/67b1e1cd245eadb2b2597db650a8c772
2
- 7. tkinter/__init__.py より
7
import tkinter
from tkinter.constants import *
tk = tkinter.Tk()
frame = tkinter.Frame(tk, relief=RIDGE, borderwidth=2)
frame.pack(fill=BOTH,expand=1)
label = tkinter.Label(frame, text="Hello, World")
label.pack(fill=X, expand=1)
button = tkinter.Button(frame,text="Exit",command=tk.destroy)
button.pack(side=BOTTOM)
tk.mainloop()
- 11. 多重継承による実装
• Fluent Python 第1版 第12章 継承の功罪
• 「標準ライブラリで多重継承を極端に用いている例」として紹介
11
>>> import tkinter
>>> def print_mro(cls):
... print(', '.join(c.__name__ for c in cls.__mro__))
...
>>> print_mro(tkinter.Toplevel)
Toplevel, BaseWidget, Misc, Wm, object
>>> print_mro(tkinter.Canvas)
Canvas, Widget, BaseWidget, Misc, Pack, Place, Grid, XView, YView, object
>>>
- 13. canvas が便利
13
def create_widgets(self):
self.cv = tk.Canvas(self, width=440, height=440)
# omitted
self.cv.create_text(60, 60, text="歩", tag="player")
self.cv.pack(side="top")
def set_player_pos(self, x, y):
self.cv.coords("player", x, y)
def set_player_text(self, text):
self.cv.itemconfigure("player", text=text)
def button_pressed(self):
# omitted
self.set_player_text("香")
- 14. ttk = テーマ付きウィジェット
• https://docs.python.org/ja/3/library/tkinter.ttk.html
14
>>> from tkinter import ttk
>>> import tkinter
>>> root = tkinter.Tk()
>>> ttk.Style().configure("TButton", padding=6, relief="flat", background="#ccc")
>>> btn = ttk.Button(text="Hello")
>>> btn.pack()