tkinter Graphical Interface Learning Based on Python
- 2021-11-02 01:44:15
- OfStack
Catalog 1. Basic Content 2. Gradient Window and Timer 3. Simple Layout Label Text Box Buttons 3.1 Layout 3.2 Layout 4. Celsius Fahrenheit 5. Random pop-up numbers (random roll call, lottery) 6. Several rows and columns 5 sub-chess canvas
1. Basic content
import tkinter as tk
from PIL import Image,ImageTk
def my():
pwin.destroy()
win.deiconify()
win = tk.Tk()
#win.geometry('320x240+100+50') # Long 320 Width 240 Right 100 , under 50
win['width']=320 # Can be used win.keys() See what can be written like this
win['height']=240
win.title('tkinter Graphical thematic learning ')
#win.iconbitmap('my.ico')
img=ImageTk.PhotoImage(image=Image.open('1.gif','r'))
win.iconphoto(False,img)
#win.withdraw()# Temporary withdrawal
#win.deiconify()# Recovery
#win.iconify()# Minimize
#win.destroy()# Turn off
#help(win.state)
"""
win.state('iconic')
win.state('normal')
win.state('zommed')
win.state('zoomed')
win.state('withdraw')
"""
#win.attributes('-alpha',0.5) # Setting Transparency
#win.attributes('-toolwindow',1)# There is no Maximize Minimize button
#win.attributes('-toolwindow',0)# Regular window
#win.attributes('-topmost',1) # Set top
win.withdraw() # Hide the original window
pwin=tk.Toplevel(win) # New pop-up window
pwin.title(' Pop-up window ')
pwin.protocol('WM_DELETE_WINDOW',my)
win.mainloop()
2. Gradient window and timer
# Timer
import tkinter as tk
import time
def my():
global x
if x >1:
return
win.title(' Timer: {:.2f}'.format(x))
win.attributes('-alpha', x)
x += 0.01
win.after(200,my) #100ms
win = tk.Tk()
win.title(" Timer ")
win['bg']= 'lightblue' # Use win.keys() View
win.geometry('300x300')
win.resizable(0,0) # Immutable window size
x = 0.01
win.attributes('-alpha', x)
win.after(200,my)
win.mainloop()
3. Simple layout label text box button
3.1 Layout
import tkinter as tk
win=tk.Tk()
win.title(" Layout ")
win.geometry('320x240')
#win.resizable(0,0)
# Definition
lbl=tk.Label(win,text=" Please enter ")
txt=tk.Entry(win)
btn=tk.Button(win,text=" Determine ")
# Layout Method 1pack Packed placement Method 2grid Tabular placement Method 3place Place arbitrarily
"""
lbl.pack(side='left' ,padx=(10,0))
txt.pack(side='left') #txt.pack_info() View pack Parameters of
btn.pack(side='left', padx='10')
"""
"""
lbl.grid(row=0,column=0,padx=(50,10),pady=10) #lbl.grid_info() View grid Parameters of
txt.grid(row=0,column=1)
btn.grid(row=1,column=0,columnspan=2,padx=(50,0),pady=10, sticky='we')
"""
lbl.place(relx=0.1,rely=0.2)
txt.place(relx=0.3,rely=0.15)
btn.place(relx=0.5,rely=0.25)
#win.mainloop()
3.2 Layout
import tkinter as tk
# Build a window
win=tk.Tk()
win.title(' Layout ')
# Building components
frm=tk.Frame(win) # Framework
# Definition
lbl=tk.Label(frm,text=' Please enter ')
txt=tk.Entry(frm)
btn=tk.Button(win,text=' Determine ')
# Layout
lbl.pack(side='left', padx=10, pady=10)
txt.pack(side='left', padx=10, pady=10)
frm.pack()
btn.pack(fill='x')
win.mainloop()
4. Celsius Fahrenheit
import tkinter as tk
def myfun(e):
#def myfun():
try:
a=int(entry1.get())
b=int(entry2.get())
lbx.delete(0,'end')
for i in range(a,b+1):
f=i*9/5+32
lbx.insert('end',' {} {}'.format(i,f))
except:
pass
win=tk.Tk()
win.title(' Temperature conversion ')
win.resizable(0,0) # Size cannot be changed
label1 = tk.Label(win, text=' Please enter the 1 Integer ')
label2 = tk.Label(win, text=' Please enter the 2 Integer ')
label3 = tk.Label(win, text=' Celsius temperature Fahrenheit temperature ')
entry1 = tk.Entry(win)
entry2 = tk.Entry(win)
entry1.insert(0, '10')
entry2.insert(0, '15')
#btn=tk.Button(win, text=' Determine ',command=myfun)
btn=tk.Label(win, text=' Determine ',# Put label Become a button
relief='groove') # Embossed
btn.bind('<Button-1>', myfun) # Use bing Binding You must give the function parameter
lbx=tk.Listbox(win)
# Scroll bar
scr=tk.Scrollbar(win)
scr['command']=lbx.yview
lbx['yscrollcommand']=scr.set
label1.grid(row=1, column=0)
label2.grid(row=2, column=0)
label3.grid(row=0, column=2)
entry1.grid(row=1, column=1)
entry2.grid(row=2, column=1)
btn.grid(row=3, column=1, sticky="ew")
lbx.grid(row=1, column=2, rowspan=3, padx=10, pady=10)
scr.grid(row=1, column=3, rowspan=3, sticky='ns')
#btn.key() Find the parameters you can set Or btn.config()
win.mainloop()
5. Random pop-up numbers (random roll call, lucky draw)
import tkinter as tk
import random
def myfun():
lst=list(range(100))
name=random.choice(lst)
lbl['text']=name
win.after(500,myfun)
win=tk.Tk()
win.title(' Lottery procedure ')
lbl=tk.Label(win,text='***', width=6,font='-size 48')
btn=tk.Button(win,text=' Begin ', font='-size 36', command=myfun)
lbl.grid(row=0,column=0,padx=10,pady=10)
btn.grid(row=0,column=1,padx=10,pady=10)
#win.mainloop()
6. A few rows and columns of 5 chess canvases
import tkinter as tk
win=tk.Tk()
win.title('5 Sub-chess ')
win.geometry('800x600+64+32')
win.resizable(0,0)
# Build a canvas
cav=tk.Canvas(win, width=600,height=600, bg='yellow')
rfm=tk.Frame(win,width=200,height=600, bg='lightyellow')
cav.pack(side='left')
rfm.pack(side='right')
# Draw a line
for i in range(1,20):
x1, y1, x2, y2=30, i*30,19*30,i*30
cav.create_line(x1,y1,x2,y2)
cav.create_line(y1,x1,y2,x2)