Canvas组件周围边框去除
   1
Canvas组件在铺满父组件时,发现周围有白色边框,设置boder、borderwidth都无效。查了一番资料后发现设置 highlightthickness=0 即可移除白框。 1 2 3 4 5 6 7 8 9 10 from tkinter import * app = Tk() app.geometry("800x600") cvs = Canvas(app, bg="#2B2B2B", highlightthickness=0) cvs.configure(highlightthickness=0) cvs.place(x=0, y=0, width=800, height=600) app.mainloop()
Tkinter Scrollbar滚动条自动隐藏
   1
Tkinter的滚动条,在数据比较少的时候也展示,看着很不美观。可以通过检测鼠标的事件,当鼠标进入到组件上方时才展示,鼠标移出组件上方时,隐藏。 关键事件,<Enter> 鼠标进入组件上方, <Leave> 鼠标移出组件上方。 关键方法,bar.lift(widget),bar.lower(widget),这两个方法的作用,分别是提高组件层级,和降低组件层级,传入的参数,则表示比传入组件的层级高或更低。类似html样式中的index属性,通过调整层级,实现显示和隐藏滚动条。 代码演示 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 from tkinter import * from tkinter.
Tkinter使用PIL导入图片不展示解决方法
   2
tkinter中原生的加载图片方式,并不支持主流图片格式,要想加载jpg、png之类的,比较好的解决方式是使用PIL的Image, ImageTk模块来导入。 简单测试,在画布上添加一个图片,运行以下代码没有任何问题。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from tkinter import * from PIL import Image, ImageTk tk = Tk() canvas = Canvas(tk, width=500, height=500) img = Image.open("avatar.jpg") myPic = ImageTk.PhotoImage(img) canvas.create_image(0, 0, image=myPic, anchor="nw") canvas.pack(fill=BOTH, expand=True) tk.mainloop() 但是当我把加载图片相关的操作封装成一个函数时,再测试,图片已经不展示了,这操作令人费解。查了相关资料,说函数执行完毕后,内部的变量被回收释放了。需要将图片设置成全局变量,函数销毁后图片还在。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from tkinter import * from PIL import Image, ImageTk def openimg(): img = Image.
Tkinter布局助手代码模版语法
   7
简介 为满足不同用户的需求,tkinter布局助手推出了自定义模版,用户可根据自己的需求生成代码。 tk文件 在开始学习模板语法前,需要先了解一下tk文件是什么,tk文件其实是一段json代码经过base64编码后的一段文本。详见源码。 以下是一个tk文件中的json信息,在顶层是窗口的坐标以及配置信息,“elements"键下是窗口内的组件相应信息,如果是容器类组件也包含"elements"键 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 { "top": 20, "left": 152, "width": 462, "height": 332, "id": "lj0ubsuf", "type": "tk_win", "text": "Tkinter布局助手", "is_ttkbootstrap": false, "ttkbootstrap_theme": "cosmo", "frame": true, "elements": [{ "top": 70, "left": 90, "width": 50, "event_bind_list": [], "boot_color": "default", "boot_type": "", "is_show": true, "height": 30, "text": "标签", "id": "lj9in5xy", "type": "tk_label" }, { "top": 100, "left": 200, "width": 50, "event_bind_list": [], "boot_color": "default", "boot_type": "", "is_show": true, "height": 30, "text": "按钮", "id": "ljnwqonp", "type": "tk_button" }], "event_bind_list": [], "menus": [] } 模版语法 在模版中读取窗口的json信息 要使用模板的语法,必须用“{{}}”将语法包裹起来
Tkinter打印记录日志
   3
Tkinter程序打包后,如何查看程序运行的日志呢?比如关键地点的 print() 记录。 有大致两种方式,1、将日志写入到文本中。2、将日志输出到界面上。 实现原理 我们先看一下 print() 函数的参数信息。注意这一段 file=sys.stdout 这里将打印内容写到了 sys.stdout 即控制台的标准输出。 只有我们重新实现下 sys.stdout 打印日志的功能也就基本出来了。 print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
站长微信
请备注来意
二维码