tkinter使用基础

本来想学习写游戏,但是有个事件机制不会,就想着想学个GUI,结果我这一天停下来越听越没耐心--我为啥不直接学事件机制呢?

不过今天好不容易累死累活学的这么一点东西,还是做点总结吧.

写了十一个小例子,先贴在底下感受一下:

import tkinter as tk

app=tk.Tk()#使用该函数可以创建一个root,顶层窗口,注意k是小写
app.title("root window")

theLabel=tk.Label(app,text="我的第一个窗口程序")
theLabel.pack()#注释掉之后窗口里就没有这句话了
app.mainloop()#必须使用该方法才能生成窗口
------------------------------------------------
class APP:
    def __init__(self,master):
        frame=tk.Frame(master)
        frame.pack(side=tk.LEFT,padx=10,pady=10)

        self.hi_there=tk.Button(frame,text="打招呼",bg="blue",fg="yellow",command=self.say_hi)
        self.hi_there.pack()

    def say_hi(self):
        print("我是一个快乐的按钮")

root=tk.Tk()
app=APP(root)

root.mainloop()
---------------------------------------------------
root =tk.Tk()
label1=tk.Label(root,text="经过检测您还没有购买,\n请购买正版之后再使用",justify=tk.LEFT)
label1.pack(side=tk.LEFT)

photo1=tk.PhotoImage(file="周润发.gif")
label2=tk.Label(root,image=photo1)
label2.pack(side=tk.RIGHT)
tk.mainloop()
-------------------------------------------------
root=Tk()

frame1=Frame(root)
frame2=Frame(root)

var1=StringVar()
var1.set("检测到您还没有购买正版,\n请在购买后再使用")
textLabel1=Label(frame1,textvariable=var1,justify=LEFT)
textLabel1.pack(side=LEFT)

photo1=PhotoImage(file="周润发.gif")
imageLabel1=Label(frame1,image=photo1)
imageLabel1.pack(side=RIGHT)

def claback():
    var1.set("请前往关注微信公众号或支付宝缴费")

button1=Button(frame2,text="前去购买",command=claback)
button1.pack()

frame2.pack()
frame1.pack()


mainloop()
--------------------------------------------------
root=Tk()
photo1=PhotoImage(file="壁纸2.gif")
theLable1=Label(
                    root,
                    text="我是我自己",
                    justify=LEFT,
                    image=photo1,
                    compound=CENTER,
                    font=("隶书",30),
                    fg="white"
                    )
theLable1.pack()
mainloop()
-------------------------------------------------------
root=Tk()

GIRLS=["肖","林","萧"]
v=[]

for girl in GIRLS:
    v.append(IntVar())
    b=Checkbutton(root,text=girl,variable=v[-1])
    b.pack(anchor=W)
    Label(root,textvariable=v[-1]).pack()

mainloop()
-------------------------------------------------------------
root=Tk()

group=LabelFrame(root,text="最好的脚本语言是",padx=5,pady=5)
group.pack(padx=10,pady=10)

LANGS=[("python",1),("Perls",2),("PHP",30),("Ruby",4)]
v=IntVar()
v.set(1)

for lang,num in LANGS:
    b=Radiobutton(group,text=lang,variable=v,value=num,indicatoron=FALSE)
    #b.pack(anchor=W)
    b.pack(fill=X )
else:
    Label(root,textvariable=v).pack()

mainloop()
------------------------------------------------------
root=Tk()

e=Entry(root)
e.pack(padx=10,pady=10)

e.delete(0,END)
e.insert(0,"默认文本")

mainloop()
----------------------------------------------------------
root=Tk()

Label(root,text="你说的话:").grid(row=0,column=0)
Label(root,text="回答:").grid(row=1,column=0)

v1=StringVar()
v2=StringVar()
e1=Entry(root,textvariable=v1,show="S")
e2=Entry(root,textvariable=v2)
e1.grid(row=0,column=1,padx=10,pady=5)
e2.grid(row=1,column=1,padx=10,pady=5)

def show():
    v2.set("别问我,我不知道")
    print("你问道:",e1.get())
    print("回答是",e2.get())

Button(root,text="告诉我",width=10,command=show)\
    .grid(row=2,column=0,sticky=W,padx=10,pady=5)
Button(root,text="退出",width=10,command=root.quit)\
    .grid(row=2,column=1,sticky=E,padx=10,pady=5)

mainloop()
------------------------------------------------------
root=Tk()
Label(root,text="密码是多少?").grid(row=0,column=0)

v1=StringVar()

def test():
    if  e1.get()=="123456":
        return TRUE
    else:
        v1.set("输入的密码不正确")
        return FALSE
#还有invalidcommand属性,当输入无效时调用该函数的属性.
e1=Entry(root,textvariable=v1,validate="focusout",validatecommand=test)
e1.grid(row=1,column=0)

mainloop()

行吧,B站那个小甲鱼讲课其实不咋地.

类似于HTML的标签,有一对Label,Entry,Button,RadioButton,Text等的控制件,当年写个HTML用的标签语言,那是何等的轻松写意,到了python这里是真的难受:你要先创建一个控制键对象,还要在构造的时候说明它是部署在哪个控制键上(说明它的父标签是谁),然后指定它的文本内容(就相当于标签内的文本),还有一大堆的属性等着你填,最后还要pack或者grid一下(就是这些控制件在整个页面上的布局),让我回忆起被Java的GUI支配的恐惧.

总之就是一堆繁琐而细碎的东西,学这个就感觉洗碗或者洗衣服或者写作业一样,纯粹就是一种折磨.

发布了33 篇原创文章 · 获赞 9 · 访问量 5397

猜你喜欢

转载自blog.csdn.net/realliyuhao/article/details/104348344