8-1һڡʵ£
#test8-1.py
import tkinter as tk # Tkinter ģ鲢һtk
w = tk.Tk()  # ʵtk.Tk            
w.title("") # ӱ   
w.mainloop()  # mainloop()ʱڲŻʾ
    
ϳнΪ


8-2Labelؼʵ£
#test8-2.py
     import tkinter as tk#tkinterģ飬ȡΪtk
     #from tkinter import *  #βô䣬w=Tk()Ϳ,Ҫʹñ
     w= tk.Tk()# ʵtk.TK
     w.title("MY GUI")# ӱ
     tk.Label(w, text="MY Label").pack()#ֻеpack()ʾǩ
     w.mainloop()
ϳнΪ	

8-3Buttonťıԡʵ£
#test8-3.py
from tkinter import *
w=Tk()
# ӱ
w.title("MY GUI")    
# һǩtextΪǩʾ
lbl=Label(w, text="MY Label").pack()
# btʱúЧ
def clickMe(): 
    # buttonʾ
    bt.configure(text="** I have been Clicked**") 
      

# һťtextΪťʾ
bt=Button(w, text="Click Me!", command=clickMe) 

#commandť֮command()
bt.pack()
w.mainloop()        

ϳнΪ
 


8-4Checkbuttonؼʵ£
#test8.4.py
def callChk():
    str="ѡ"
    if v1.get()==1:
        str+=""
    if v2.get()==1:
        str+="ڹ̣"
    if v3.get()==1:
        str+=""
    Label(w,text=str).pack()
from tkinter import *
w=Tk()
w.geometry("250x120")
w.title("ѡʾ")
v1=IntVar()
v2=IntVar()
v3=IntVar()
v1.set(1)     #øѡ״̬
v2.set(0)
v3.set(0)
Checkbutton(w,variable=v1,text='',command=callChk).pack()
Checkbutton(w,variable=v2,text='ڹ',command=callChk).pack()
Checkbutton(w,variable=v3,text='',command=callChk).pack()
w.mainloop()

 
нΪ

8-5Radiobuttonؼ,ͨѡɫıǩɫʵ£
#test8.5.py
      def colorChecked():    #ıǩıɫ
    lbl.config(fg=color.get()) 
from tkinter import *
w=Tk()
w.title("ѡť")
lbl=Label(w,text="Pythonƻ!",fg='red')
lbl.pack()
color=StringVar()
color.set('red')      #Ĭѡ
Radiobutton(w,text="ɫ",variable=color,value="red",\
    command=colorChecked).pack()
Radiobutton(w,text="ɫ",variable=color,value="blue",\
    command=colorChecked).pack( )
Radiobutton(w,text="ɫ",variable=color,value="green",\
    command=colorChecked).pack( )
w.mainloop()

    
ϳнΪ



8-6Entryؼ,뵥ıťʾݡʵ£
#test8-6.py
def entf():
    Label(w,text=v.get()).pack()
from tkinter import *
w=Tk()
w.geometry("350x150")
w.title("ıʾ")
v=StringVar()
Entry(w,textvariable=v).pack()
Button(w,text='ʾ',command=entf).pack()
w.mainloop()
ϳнΪ

8-7Textؼ,ıťʾݡʵ£
#test8-7.py
from tkinter import *
w=Tk()
w.geometry("350x150")
w.title("ıʾ")
t=Text(w)
t.pack()
w.mainloop()

ϳнΪ






8-8Frameؼ,һܡʵ£
from tkinter import *
w=Tk()
w.geometry("350x150")
w.title("ܲʾ")
f=Frame(w,bd=4)
f.pack()
Checkbutton(f,text="").pack()
Checkbutton(f,text="ڹ").pack()
Checkbutton(f,text="").pack()
w.mainloop()
³н£



8-9Comboboxؼʵ£
#test8-9.py
import tkinter as tk
from tkinter import ttk
w= tk.Tk()
# ӱ
w.title("Python GUI")   
ttk.Label(w, text="Chooes a number").grid(column=1, row=0)
# һǩΪ1Ϊ0
ttk.Label(w, text="Enter a name:").grid(column=0, row=0)
# ڽгֵλãcolumnУrowСbutton֮ᱻִ
def clickMe():
    # btʱúЧ
    bt.configure(text='Hello ' + name.get())
    # buttonʾ
    # ťΪɫ״̬ʹ״̬
    bt.configure(state='disabled')
# һťtextΪťʾ
#commandť֮command()
bt = ttk.Button(win, text="Click Me!", command=clickMe)

# ڽгֵλãcolumnУrow
bt.grid(column=2, row=1)

# StringVarTkڲַͣڹַ
#һڰťϡıStringVarťϵҲ֮ı
name = tk.StringVar()

# һı򣬶峤Ϊ12ַ
#ҽıеݰ󶨵һ䶨nameϣclickMe
nameEntered = ttk.Entry(win, width=12, textvariable=name)

# ڽгֵλãcolumnУrow
nameEntered.grid(column=0, row=1)

# ʱĬϻڸı
nameEntered.focus()
number = tk.StringVar()
numberChosen = ttk.Combobox(win, width=12, textvariable=number)

# бֵ
numberChosen['values'] = (1, 2,3,4,5)

# ڽгֵλãcolumnУrow
numberChosen.grid(column=1, row=1)

# бĬʾֵ0ΪnumberChosen['values']±ֵ
numberChosen.current(0)
win.mainloop()
ϳнΪ



8-10һбؼвѡʵ£
from tkinter import *
w=Tk()
w.geometry("250x150")
w.title("бʾһ")
lb=Listbox(w)
for item in ['','ڹ','']:
    lb.insert(END,item)
lb.pack()
w.mainloop()
ϳн£

8-11Menuؼ,һͼ˵ͨ˵ƲͬͼΡʵ£
#test8-11.py

     from tkinter import *
     def callback1():
         c=Canvas(w,width=300,height=200,bg='white')
         c.pack()
         c.create_rectangle(50,50,200,200)
     def callback2():
         c=Canvas(w,width=300,height=200,bg='white')
         c.pack()
         c.create_oval(50,50,140,140)
     def callback3():
         w.quit()
     def callback4():
         print("Ҳѧϰpythonѧϰpythonr ·.")
     w=Tk()
     w.title("˵")
     m=Menu(w)
     w.config(menu=m)
     plotmenu=Menu(m)
     m.add_cascade(label="ͼ",menu=plotmenu)
     plotmenu.add_command(label="",command=callback1)
     plotmenu.add_separator()
     plotmenu.add_command(label="Բ",command=callback2)
     plotmenu.add_command(label="˳",command=callback3)
     helpmenu=Menu(m)
     m.add_cascade(label="",menu=helpmenu)
     helpmenu.add_command(label="About...",command=callback4)
     w.mainloop()ϳнΪ


8-12packֹӦáʵ£
from tkinter import *
w=Tk()
w.geometry('250x100')  #ıwĴСΪ250x100
Lbl1=Label(w,text='ѧ',bg='yellow')
Lbl1.pack(expand=1,side=LEFT,ipadx=20)
Lbl2=Label(w,text='廪ѧ',bg='red')
Lbl2.pack(fill=Y,expand=1,side=LEFT,padx=10)
Lbl3=Label(w,text='ɽѧ',bg='green')
Lbl3.pack(fill=X,expand=0,side=RIGHT,padx=10)
w.mainloop()
ϳн:



8-13girdֹӦáʵ£

from tkinter import *
w=Tk()
var1=IntVar()
var2=IntVar()
Label(w,text="").grid(row=0,column=0,sticky=W)
Label(w,text="סַ").grid(row=0,column=10,sticky=E)
Entry(w).grid(row=0,column=1)
Entry(w).grid(row=0,column=11)
lframe=LabelFrame(w,text='Ա')
radiobutton1=Radiobutton(lframe,text='',variable=var1)
radiobutton2=Radiobutton(lframe,text='Ů',variable=var2)
lframe.grid(sticky=W)
radiobutton1.grid(sticky=W)
radiobutton2.grid(sticky=W)
w.mainloop()
ϴнǣ


8-14굥¼ʵ£
#test8-14.py

     def hello():
     	print("how are you")
     from tkinter import *
     w=Tk()
     btn=Button(w,text="click me",command=hello)
     btn.pack()
     btn.mainloop()
ϳнΪ
 
8-15ƶ¼ʵ£
#test8-15.py
     from tkinter import *
     w= Tk()
     def printCoords(event):
         print (event.x,event.y)
     
     # һButtonƶ¼
     bt1 = Button(w,text = 'left button')
     bt1.bind('<B1-Motion>',printCoords)
     
     # ڶButtonһƶ¼
     bt3 = Button(w,text = 'right button')
     bt3.bind('<B3-Motion>',printCoords)
     bt1.grid()
     bt3.grid()
     w.mainloop()
ϳнΪ
 

8-16Լ¼,̿ǻس˸ȡʵ£
#test8-16.py
     import tkinter as tk
     w = tk .Tk()
     w.title("xinghaohan")
     w.geometry("400x400")
     label = tk .Label(w,text="good good study", bg="red")
     label.focus_set()#ý
     label.pack()
     def func(event):
         print("event.char =", event.char)
         print("event.keycode =", event.keycode)
     #<Shift_L> shift
     #<Shift_R> shift
     #<F5> 
     #<Return    س
     #<BackSpace>˸
     label.bind("<Return>",func)
     w.mainloop()
ϳнΪسʱASCII룬Ч

8-17еļ¼ʵ£
#test8-17.py
     import tkinter as tk
     w = tk.Tk()
     w.title("nfxy")
     w.geometry("400x400")
     label = tk.Label(w,text="ôҪѧpython", bg="blue")
     #ý
     label.focus_set()
     label.pack()
     def func(event):
         print("event.char =", event.char)
         print("event.keycode =", event.keycode)
     #<Key> Ӧеİ
     label.bind("<Key>",func)
     w.mainloop()
ϳнΪASCII롣

event.char = shift_r
event.keycode = 16
event.char = a
event.keycode = 65
event.char = 1
event.keycode = 49

ϽУԵϵмԼ롣
ָ¼Ĵ룬ֻܰa
import tkinter as tk
w= tk .Tk()
w.title("nfxy")
w.geometry("400x400")
def func(event):
    print("event.char =", event.char)
    print("event.keycode =", event.keycode)
w.bind("a",func)
w.mainloop()
8.18һ׵ļ£ҪʵּӼ˳㣬ͬʱ˸Լ


£
import tkinter
from functools import partial

# ť
def get_input(entry, argu):
    # entryչʾлȡ
    input_data = entry.get()

    # Ϸ : + - * / -- ** // +-
    # ------------ ϷжϵŻ ------------
    # һַǴ(Ѿ),ԭֵΪ,ֵΪ
    # if not input_data[-1:].isdecimal() and (not argu.isdecimal()):
    #     if input_data[-2:] in ["--", "**", "//", "+-"]:
    #         return
    #     if (input_data[-1:] + argu) not in ["--", "**", "//", "+-"]:
    #         return
    # ------------------------------------------------

    # +ڶ+ΪЧ룬κδ
    if (input_data[-1:] == '+') and (argu == '+'):
        return
    # +---ΪЧ룬κδ
    if (input_data[-2:] == '+-') and (argu == '-'):
        return
    # Ѿ--ַΪ+-
    if (input_data[-2:] == '--') and (argu in ['-', '+']):
        return
    # Ѿ ** ַΪ *  /
    if (input_data[-2:] == '**') and (argu in ['*', '/']):
        return

    # Ϸַ뵽entryڽβ
    entry.insert("end", argu)

# ˸()
def backspace(entry):
    input_len = len(entry.get())
    # ɾentryַ
    entry.delete(input_len - 1)

# entry(մ)
def clear(entry):
    entry.delete(0, "end")

# 
def calc(entry):
    input_data = entry.get()
    # ǰжǷΪ;ַΪ*/;*/3;
    if not input_data:
        return
    clear(entry)
    # 쳣ڽʱ쳣Ӧ
    # noinspection PyBroadException
    try:
        # eval() ִһַʽرʽִֵнתΪַ
        output_data = str(eval(input_data))
    except Exception:
        # ʾϢ
        entry.insert("end", "Calculation error")
    else:
        # ʾڴ
        if len(output_data) > 20:
            entry.insert("end", "Value overflow")
        else:
            entry.insert("end", output_data)
if __name__ == '__main__':
    root = tkinter.Tk()
    root.title("Calculator")
    # Сɵԣֱʾx,yĿɱԣ
    root.resizable(0, 0)
    button_bg = 'orange'
    math_sign_bg = 'DarkTurquoise'
    cal_output_bg = 'YellowGreen'
    button_active_bg = 'gray'
    # justify:ʾıʱ, ò֮ͬĶ뷽ʽѡLEFT, RIGHT, CENTER
    # ıӴ󷽿ʼʾĬϿʾ20ַ
    # rowentryеĺλ
    # columnentryеλ
    # columnspan:,һֻռһԪ;ͨcolumnspanϲһеĶڵԪ
    entry = tkinter.Entry(root, justify="right", font=1)
    entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
    def place_button(text, func, func_params, bg=button_bg, **place_params):
        # ƫpartialΪһģ壬İťģϽ޸Ļ
        # activebackgroundťºʾplace_paramsɫ
        my_button = partial(tkinter.Button, root, bg=button_bg, padx=10, pady=3, activebackground=button_active_bg)
        button = my_button(text=text, bg=bg, command=lambda: func(*func_params))
        button.grid(**place_params)

    # ıఴť
    place_button('7', get_input, (entry, '7'), row=1, column=0, ipadx=5, pady=5)
    place_button('8', get_input, (entry, '8'), row=1, column=1, ipadx=5, pady=5)
    place_button('9', get_input, (entry, '9'), row=1, column=2, ipadx=5, pady=5)
    place_button('4', get_input, (entry, '4'), row=2, column=0, ipadx=5, pady=5)
    place_button('5', get_input, (entry, '5'), row=2, column=1, ipadx=5, pady=5)
    place_button('6', get_input, (entry, '6'), row=2, column=2, ipadx=5, pady=5)
    place_button('1', get_input, (entry, '1'), row=3, column=0, ipadx=5, pady=5)
    place_button('2', get_input, (entry, '2'), row=3, column=1, ipadx=5, pady=5)
    place_button('3', get_input, (entry, '3'), row=3, column=2, ipadx=5, pady=5)
    place_button('0', get_input, (entry, '0'), row=4, column=0, padx=8, pady=5,
                 columnspan=2, sticky=tkinter.E + tkinter.W + tkinter.N + tkinter.S)
    place_button('.', get_input, (entry, '.'), row=4, column=2, ipadx=7, padx=5, pady=5)
    # ఴť(ֻǱɫͬ)
    # ַС('+','-'Ȳһ,ʹipadx)
    place_button('+', get_input, (entry, '+'), bg=math_sign_bg, row=1, column=3, ipadx=5, pady=5)
    place_button('-', get_input, (entry, '-'), bg=math_sign_bg, row=2, column=3, ipadx=5, pady=5)
    place_button('*', get_input, (entry, '*'), bg=math_sign_bg, row=3, column=3, ipadx=5, pady=5)
    place_button('/', get_input, (entry, '/'), bg=math_sign_bg, row=4, column=3, ipadx=5, pady=5)
    # ఴť(ɫܲͬ)
    place_button('<-', backspace, (entry,), row=5, column=0, ipadx=5, padx=5, pady=5)
    place_button('C', clear, (entry,), row=5, column=1, pady=5, ipadx=5)
    place_button('=', calc, (entry,), bg=cal_output_bg, row=5, column=2, ipadx=5, padx=5, pady=5,
                 columnspan=2, sticky=tkinter.E + tkinter.W + tkinter.N + tkinter.S)

    root.mainloop()




https://blog.csdn.net/weixin_42795087/article/details/89931944



