范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python中的tkinter库简单案例详解

  TKinter
  Python 的 GUI 库非常多,之所以选择 Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,跨平台兼容性非常好,三则是从需求出发的,Python 在实际应用中极少用于开发复杂的桌面应用,毕竟,Python 的各种 GUI 工具包都"一般得很",不具备优势。案例一Label & Button 标签和按钮import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("muy window")  # 设置标题 window.geometry("200x100")  # 设置窗口的大小 var1 = tk.StringVar()  # 定义tk变量 l1 = tk.Label(window, textvariable=var1, bg="green", font=("Arial", 12), width=15, height=2)  # 设置标签,内容显示为var1变量 l1.pack()  # 摆放这个标签 hit_me1 = False def hit_me():     global hit_me1     if not hit_me1:         hit_me1 = True         var1.set("this is tk")  # 给变量赋值     else:         hit_me1 = False         var1.set("this is tk, too") b1 = tk.Button(window, text="hit me", width=15, height=2, command=hit_me)  # 点击按钮,运行hit_me这个函数 b1.pack() window.mainloop()  # 显示窗口案例二Entry & Text 输入和文本框import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("muy window")  # 设置标题 window.geometry("200x150")  # 设置窗口的大小 e = tk.Entry(window, show=None)  # 如果输入密码的话,show="*" e.pack() def insert_point():     var = e.get()  # 得到文本输入框的值     t.insert("insert", var)  # 文本放到光标位置 def insert_end():     var = e.get()     t.insert("end", var)  # 将文本放到文本框的末尾     # t.insert(1.1, var)  # 将文本放到第一行第一列 b1 = tk.Button(window, text="insert point", width=15, height=2, command=insert_point).pack()  # 定义一个按钮,显示在光标位置插入文本 b2 = tk.Button(window, text="insert end", width=15, height=2, command=insert_end).pack()  # 在末尾出插入 t = tk.Text(window, height=2, width=15) t.pack()  # 注意不能一行写完,pack要写在下一行 window.mainloop()  # 显示窗口案例三Listbox 部件import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("muy window")  # 设置标题 window.geometry("200x150")  # 设置窗口的大小 var1 = tk.StringVar() l = tk.Label(window, bg="yellow", width=4, textvariable=var1) l.pack() def print_selection():     var = lb.get(lb.curselection())  # 得到鼠标点击的内容     var1.set(var)  # 将值赋值给var1 b1 = tk.Button(window, text="insert point", width=15, height=2,                command=print_selection).pack()  # 定义一个按钮,显示在光标位置插入文本 var2 = tk.StringVar()  # 存储可迭代对象的值 var2.set((1, 2, 3, 4))  # 列表也可,设置初始值 lb = tk.Listbox(window, listvariable=var2) list_item = [1, 2, 11, 54] for i in list_item:     lb.insert("end", i)  # 向列表框中插入值 lb.delete(1)  # 删除下标索引为2的值 lb.pack() window.mainloop()  # 显示窗口案例四Radiobutton 选择按钮import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("muy window")  # 设置标题 window.geometry("200x150")  # 设置窗口的大小 var1 = tk.StringVar() l = tk.Label(window, bg="yellow", width=15) l.pack() def print_selection():     l.config(text=f"you have select {var1.get()}")  # 将text重新赋值 rad1 = tk.Radiobutton(window, text="select a", variable=var1, value="A",                       command=print_selection).pack()  # variable=var1, value="A" 的意思是,将var1赋值成A rad2 = tk.Radiobutton(window, text="select b", variable=var1, value="B", command=print_selection).pack() rad3 = tk.Radiobutton(window, text="select c", variable=var1, value="C", command=print_selection).pack() window.mainloop()  # 显示窗口	案例五Scale 尺度import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("muy window")  # 设置标题 window.geometry("200x150")  # 设置窗口的大小 l = tk.Label(window, bg="yellow", width=15) l.pack() def print_selection(v):  # Scale调用函数,其有自动的传入值     l.config(text=f"you have select {v}")       s = tk.Scale(window, label="try me", from_=5, to=11, orient=tk.HORIZONTAL,              length=200, showvalue=0, tickinterval=3, resolution=0.01, command=print_selection) # label设置名字,from to 设置刻度,orient设置方向,length设置长度,showvalue展示的值,tickinterval刻度,resolution精度 s.pack() window.mainloop()  # 显示窗口案例六Checkbutton 勾选项import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("muy window")  # 设置标题 window.geometry("200x150")  # 设置窗口的大小 l = tk.Label(window, bg="yellow", width=15, text="empty") l.pack() def print_selection():  # Scale调用函数,其有自动的传入值     if (var1.get() == 1) & (var2.get() == 0):         l.config(text="i love python")     elif (var1.get() == 1) & (var2.get() == 1):         l.config(text="i love both")     elif (var1.get() == 0) & (var2.get() == 1):         l.config(text="i love C++")     else:         l.config(text="i don"t love either") var1 = tk.IntVar() var2 = tk.IntVar() cl = tk.Checkbutton(window, text="Python", variable=var1, onvalue=1, offvalue=0                     , command=print_selection)  # 选择var1的值为1,否则为0 c2 = tk.Checkbutton(window, text="C++", variable=var2, onvalue=1, offvalue=0                     , command=print_selection) cl.pack() c2.pack() window.mainloop()  # 显示窗口案例七Canvas 画布import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("muy window")  # 设置标题 window.geometry("200x200")  # 设置窗口的大小 canvas = tk.Canvas(window, bg="blue", height=100, width=200) image_file = tk.PhotoImage(file=r"D:programmewebweb_fileweb学习imagesimage01.jpg")  # 注意,只能导入.gif的图片 image = canvas.create_image(0, 0, anchor="nw", image=image_file).pack()  # 锚点为左上角,西北方向 x0, y0, x1, y1 = 20, 50, 80, 80 line = canvas.create_line(x0, y0, x1, y1)  # 画线 oval = canvas.create_oval(x0, y0, x1, y1, fill="red")  # 绘制扇形 arc = canvas.create_arc(x0 + 30, y0 + 30, x1 + 30, x1 + 30, y1 + 30, start=0, extent=180)  # 扇形 rect = canvas.create_rectangle(100, 30, 100 + 20, 30 + 20)  # 绘制正方形 canvas.pack() def moveit():     canvas.move(rect, 0, 2)  # 移动正方形,使其往下走两个单位 a = tk.Button(window, text="move", command=moveit).pack() window.mainloop()  # 显示窗口案例八Menubar 菜单import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("my window")  # 设置标题 window.geometry("200x200")  # 设置窗口的大小 count = 0 l = tk.Label(window, text="", bg="yellow") l.pack() def do_job():     global count     l.config(text=f"do{str(count)}")     count += 1 """定义文件选项""" mb = tk.Menu(window) file = tk.Menu(mb, tearoff=0)  # 有没有分隔线 mb.add_cascade(label="File", menu=file)  # 添加一个功能 file.add_command(label="New", command=do_job)  # 每一个选项都是一个功能,命令 file.add_command(label="Open", command=do_job) file.add_command(label="Save", command=do_job) sm = tk.Menu(file)  # 在File里面继续添加命令 file.add_cascade(label="Submit", menu=sm) sm.add_command(label="New", command=do_job) window.config(menu=mb)  # 将菜单添加到window上面 window.mainloop()  # 显示窗口案例九Frame 框架import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("my window")  # 设置标题 window.geometry("200x200")  # 设置窗口的大小 tk.Label(window, text="on the window").pack() # 添加框架 fm = tk.Frame(window) fm.pack() fm_1 = tk.Frame(fm) fm_r = tk.Frame(fm) fm_1.pack(side="left") fm_r.pack(side="right") tk.Label(fm_1, text="on the frame_1").pack() tk.Label(fm_r, text="on the frame_r").pack() window.mainloop()  # 显示窗口 案例十messagebox 弹窗import tkinter as tk import tkinter.messagebox    window = tk.Tk()  # 实例化Tk window.title("my window")  # 设置标题 window.geometry("200x200")  # 设置窗口的大小 def hit_me():     tk.messagebox.showinfo(title="hi", message="hit")  # 注意,要导入模块,还有showwarning, showerror, """ tkinter.messagebox.askokcancel("提示", "要执行此操作吗")#确定/取消,返回值true/false tkinter.messagebox.askquestion("提示", "要执行此操作吗")#是/否,返回值yes/no tkinter.messagebox.askyesno("提示", "要执行此操作吗")#是/否,返回值true/false tkinter.messagebox.askretrycancel("提示", "要执行此操作吗")#重试/取消,返回值true/false 文件对话框 import tkinter.filedialog a = tkinter.filedialog.asksaveasfilename()#返回文件名 print(a) a = tkinter.filedialog.asksaveasfile()#会创建文件 a = tkinter.filedialog.askopenfilename()#返回文件名 a = tkinter.filedialog.askopenfile()#返回文件流对象 a = tkinter.filedialog.askdirectory()#返回目录名 a = tkinter.filedialog.askopenfilenames()#可以返回多个文件名 a = tkinter.filedialog.askopenfiles()#多个文件流对象       tk.Button(window, text="hit me", command=hit_me).pack() window.mainloop()  # 显示窗口案例十一pack grid place 放置import tkinter as tk    window = tk.Tk()  # 实例化Tk window.title("my window")  # 设置标题 window.geometry("200x200")  # 设置窗口的大小 # tk.Label(window, text="pack").pack(side="top") # tk.Label(window, text="pack").pack(side="bottom") # tk.Label(window, text="pack").pack(side="left") # tk.Label(window, text="pack").pack(side="right") # for i in range(4):  # 行 #     for j in range(3):  # 列 #         tk.Label(window, text="grid").grid(row=i, column=j, padx=10, pady=10)  # 以方格的形式放置 tk.Label(window, text="place").place(x=100, y=100, anchor="nw")  # 点的形式 window.mainloop()  # 显示窗口登录窗口import tkinter as tk import tkinter.messagebox    window = tk.Tk()  # 实例化Tk window.title("login")  # 设置标题 window.geometry("450x300")  # 设置窗口的大小 user_info = [{"name": "admin", "pwd": "1"}, {"name": "user", "pwd": "1"}]  # 存储账号信息 # 定义函数 def login():     user_info_name = [i["name"] for i in user_info]     user_info_pwd = [i["pwd"] for i in user_info]     user_name = var_user_name.get()     user_pwd = var_pwd.get()     if user_name in user_info_name:         if user_pwd == user_info_pwd[user_info_name.index(user_name)]:             tk.messagebox.showinfo(title="欢迎回来", message="How are you")         else:             tk.messagebox.showerror(message="pwd error")     else:         answer = tk.messagebox.askquestion(title="warn", message="您还没有账号,是否需要注册?")         if answer:             sign() def sign():     def store():         new_pwd1 = new_pwd.get()         new_user_name1 = new_user_name.get()         user_info.append({"name": new_user_name1, "pwd": new_pwd1})         tk.messagebox.showinfo(message="注册成功")         window_sign.destroy()  # 关闭窗口     def close():         window_sign.destroy()     window_sign = tk.Toplevel(window)  # 窗口上的窗口     window_sign.geometry("350x200")     window_sign.title("Sign up window")     # user     tk.Label(window_sign, text="Name:").place(x=60, y=60)     new_user_name = tk.StringVar()  # 注意要使用.get()得到值     new_user_name.set("exampe@python.com")  # 默认值     tk.Entry(window_sign, textvariable=new_user_name).place(x=90, y=60)  # 输入用户名     # pwd     tk.Label(window_sign, text="Pwd:").place(x=60, y=100)     new_pwd = tk.StringVar()     tk.Entry(window_sign, textvariable=new_pwd, show="*").place(x=90, y=100)  # 输入密码     # 确认按钮     tk.Button(window_sign, text="确认", command=store).place(x=100, y=140)     # 取消按钮     tk.Button(window_sign, text="取消", command=close).place(x=170, y=140) if __name__ == "__main__":           tk.Label(window, text="User Name:").place(x=50, y=50)     var_user_name = tk.StringVar()  # 注意要使用.get()得到值     var_user_name.set("exampe@python.com")  # 默认值     tk.Entry(window, textvariable=var_user_name).place(x=130, y=50)  # 输入用户名     tk.Label(window, text="Password:").place(x=50, y=90)     var_pwd = tk.StringVar()     tk.Entry(window, textvariable=var_pwd, show="*").place(x=130, y=90)  # 输入密码     # login Button     tk.Button(window, text="Login", command=login).place(x=130, y=130)  # 登录按钮     # sign Button     tk.Button(window, text="Sign Up", command=sign).place(x=200, y=130)  # 注册按钮     window.mainloop()  # 显示窗口

张瑞敏一把大锤砸烂76台冰箱,让海尔从负债147万到世界500强他三十四岁接手一家一年内更换三任厂长濒临倒闭的工厂,新官上任第一天就实行最新的现代化管理,面对工厂里充满质量问题的冰箱,他毫不留情宣布全部砸掉一个不留,让工厂的每个工人将质量刻在了iOS14。5正式版来了,这两项功能就值得你升级iOS14。5正式版来了,这两项功能就值得你升级今天凌晨苹果向所用iPhone用户推送了iOS14。5正式版,这个版本带来了很多新功能,但重要的功能更新有两个,首先是AppleWa房产经纪迎来至暗时刻,装睡的人该醒醒了最近这段时间,整个房产行业被一连串疾风暴雨般的调控政策打得晕头转向。风声鹤唳之下,业界如惊弓之鸟,处处如履薄冰。前有K12的前车之鉴,如今对于房产尤其是经纪行业,有不少人极度悲观,小米8年轻人的第一部iphoneX2017年11月3日苹果公司发布了一款全面刘海屏手机iphoneX。在产品发布之初,众多国内厂商包括海外一些手机商家并不看好刘海屏手机,网络上各种嘲讽之声不断。可是一年时间不到,国亲测iPadmini2完美降级10。3。3同时成功绕ID锁,无需越狱学小深文前段时间想买一个iPad用来看看书,因为手机屏幕比较小,看得眼睛比较累,于是在二手平台逛了好几天,终于在一天晚上逛到了心仪的个人卖家,他那有一款32G的mini2,而且还是iPadmini从IOS9。3。5完美降级IOS8。4。1,丝滑顺畅,再战几年没问题iPadmini1是苹果公司2012年10月24日在美国加州圣荷西特别发布会上发布的第一代iPad产品。配置A5双核处理器,1024768像素分辨率,7。9英寸显示屏,后置500万亲测iPadmini2降级10。3。3并完美绕ID,8年前的A7现在用着依然很香大家好,上次给大家出了一期iPadmini2任意系统降级10。3。3系统并绕ID的教程,大家意犹未尽,之前由于本人刚开始降级,经验不足,很多地方没有讲到,但这次我已经给很多个小伙伴让年轻人干了这杯白酒,爹系酒企有多拼?猎金双十一90后00后在消费市场毅然崛起,向来传统保守的爹系白酒也开始从产品形象等各方面进行新尝试,以备争夺年轻人的未来市场。作者姚悦编辑丨缪凌云来源野马财经那酒太辣了,适合我爸,我打算囤一提亲时,对方父母提出的要求颠覆我三观,多年的感情是否还要继续白苏说文导语如今谈婚论嫁谈的基本上都是彩礼,但是有很多时候,双方父母之间谈的不仅仅只是彩礼,而谈的是在彩礼的基础上,再加上一些附加要求,如果你达不成这些要求,那么你根本就没有谈婚论Mate30,note10,iPhoneXR2下半年最值得期待的手机都在这了进入到2019下半年,随着5G手机的陆续上市,今年的手机圈可谓是精彩连连,各大厂商不断展示自己的新技术,新方案,新产品,颇有一番你方唱罢我登场的感觉。进入7月份,除了在本月即将发布金沙洲最笋红盘,大量2。8万房源,时代水岸6月26日震撼开盘对于广佛置业客来说,近期的临广土拍市场可谓是激动人心。6月23日上午,中海以328431万配建4500人才房问鼎平洲靓地,成交楼面价22000元(最高限价)佛山前二,仅次于华润陈村
荣耀50发布时间确定,看起来全系是骁龙778g处理器?荣耀50系列终于确定发布时间了,当然时间定在6月16日,看起来这次荣耀50确实发布时间比p50快了!当然这次看起来还是一个系列,简单看一下吧!真机基本上就是这样的,当然配色看起来也网约车到好处到底在哪里车友们知道吗自从网约车出现以后,大家对于网约车都有很多议论,作为一个新事物,网约车的发展肯定是不完善的,但是,网约车肯定是有好处的,不然不可能存在,今天小编就给大家讲一讲网约车的好处是什么!网新鲜早科技丨马斯克收购Twitter面临反垄断审查百度宣布新一轮干部轮岗海康威视回应可能受到美国制裁消息21世纪经济报道数字经济课题组综合报道早上好,新的一天又开始了。在过去的24小时内,科技行业发生了哪些有意思的事情?来跟21tech一起看看吧。巨头风向标1马斯克收购TwitterNginx性能优化一系统内核层面net。core。somaxconn4096允许等待中的监听net。ipv4。tcptwrecycle1tcp连接快速回收net。ipv4。tcptwreuse1tc营收首次下滑!净利腰斩52。9,外界误解小米了?用了两年时间,雷军最终兑现了承诺。当小米的股价重回17港元上方的时候,雷军笑称,终于可以抬头挺胸,重新做人了。此后,他删掉了手机中所有的股票软件。雷军说,他也要做一个幸福的人,喂马加拿大拒绝华为中兴,那就让中国继续领跑吧5月19日,加拿大政府以所谓国家安全为由,宣布禁止加电信系统使用华为中兴公司的产品和服务,并称此系经加安全部门评估与加盟友协商后作出的决定。美帝的小弟,就等着让通信网络时不时断网,鸿海旗下鸿腾精密与林积为签署战略合作协议台湾中央社5月18日消息,鸿海旗下鸿腾精密FIT日前与东莞市林积为(LJV)实业投资有限公司签署战略合作协议,双方将在车载资讯产品领域,强攻电动车高速连接器市场。鸿腾指出,未来将持北京多部门约谈马蜂窝要求立即整改中关村在线消息北京市通信管理局最近发文称,会同市文化和旅游局市网信办对北京蚂蜂窝网络科技有限公司进行了约谈,要求立即进行整改。马蜂窝官网据了解,此次约谈蚂蜂窝旅游网,主要是针对其网章泽天最新消息卸任刘强东旗下公司董事今日下午消息,章泽天卸任重庆嫩绿茶艺有限公司董事一职,该公司由刘强东间接持股。根据天眼查数据显示该公司成立于2015年9月,注册资本3000余万元,经营范围包括食品生产餐饮服务等,黄光裕的出狱新零售市场的一剂兴奋剂文孟永辉似乎每一次有关黄光裕即将出狱的传闻都能够引起诸多人的关注,这个曾经给中国商界带来巨大影响的人物,即使已经入狱十余年之后,依然受到各色人等的关注。或许是人们对于互联网式的发展本田电动车来了,VGO开启预售7988元,现在就能买到最新消息,4月1日15日,本田在中国的第一款电动车,HondaVGO将在京东天猫苏宁渠道正式开启预售,预售价格7988元,将于4月15日正式发货,有需要的朋友可以提前关注了。最新信