Python GUI编程Tkinter笔记

  • 1 显示任意格式图片
  • 2 固定框架Frame大小
  • 3 选择文件夹或文件
  • 4 展示菜单栏
  • 5 展示选择的图片

1 显示任意格式图片

Tkinter只支持显示GIF图片,若需要显示PNG、JPG、BMP等格式图片,方法如下:

import tkinter
from PIL import Image, ImageTkroot = tkinter.Tk()
label_text = tkinter.Label(root, text="图片标题")
label_text.pack()img_open = Image.open('img/result.bmp')
img_png = ImageTk.PhotoImage(img_open)
label_img = tkinter.Label(root, image=img_png)
label_img.pack()
root.mainloop()

2 固定框架Frame大小

frame会随内部的按钮等部件摆放设置变化而变化大小,请问怎样能固定住?

Frame如果设置大小的话,只有当使用了pack_propagate(0)或者grid_propagate(0)之后,(width,height)才起作用,而且调用前Frame要pack或者grid了。

3 选择文件夹或文件

from tkinter import *
from tkinter.filedialog import askdirectorydef selectPath():path_ = askdirectory()print(path_)path.set(path_)root = Tk()
path = StringVar()Label(root, text="目标路径:").grid(row=0, column=0)
Entry(root, textvariable=path).grid(row=0, column=1)
Button(root, text="路径选择", command=selectPath).grid(row=0, column=2)root.mainloop()


4 展示菜单栏

from tkinter import *def new():s = '新建'lb1.config(text=s)def ope():s = '打开'lb1.config(text=s)def sav():s = '保存'lb1.config(text=s)def cut():s = '剪切'lb1.config(text=s)def cop():s = '复制'lb1.config(text=s)def pas():s = '粘贴'lb1.config(text=s)def popupmenu(event):mainmenu.post(event.x_root, event.y_root)root = Tk()
root.title('菜单实验')
root.geometry('420x340')lb1 = Label(root, text='显示信息', font=('黑体', 32, 'bold'))
lb1.place(relx=0.2, rely=0.2)mainmenu = Menu(root)
menuFile = Menu(mainmenu)  # 菜单分组 menuFile
mainmenu.add_cascade(label="文件", menu=menuFile)
menuFile.add_command(label="新建", command=new)
menuFile.add_command(label="打开", command=ope)
menuFile.add_command(label="保存", command=sav)
menuFile.add_separator()  # 分割线
menuFile.add_command(label="退出", command=root.destroy)menuEdit = Menu(mainmenu)  # 菜单分组 menuEdit
mainmenu.add_cascade(label="编辑", menu=menuEdit)
menuEdit.add_command(label="剪切", command=cut)
menuEdit.add_command(label="复制", command=cop())
menuEdit.add_command(label="粘贴", command=pas())root.config(menu=mainmenu)
root.bind('Button-3', popupmenu)  # 根窗体绑定鼠标右击响应事件
root.mainloop()

5 展示选择的图片

import tkinter as tk
from tkinter import *
from tkinter import filedialog
import cv2
import numpy as np
from PIL import Image, ImageTkclass DisplayImage:'''用于展示选择的图片'''def __init__(self, master):self.master = mastermaster.title("GUI")self.image_frame = Frame(master, bd=0, height=200, width=800, bg='yellow', highlightthickness=2,highlightbackground='gray', highlightcolor='black')self.image_frame.pack()self.Text_label = Label(master, text='图像预览')self.Text_label.pack()self.Choose_image = Button(master, command=self.choose_pic, text="Choose image",width=17, default=ACTIVE, borderwidth=0)self.Choose_image.pack()self.Display_image = Button(master, command=self.display_image, text="Display image",width=17, default=ACTIVE, borderwidth=0)self.Display_image.pack()self.filenames = []self.pic_filelist = []self.imgt_list = []self.image_labellist = []def display_image(self, event=None):# 在重新选择图片时清空原先列表self.pic_filelist.clear()self.imgt_list.clear()self.image_labellist.clear()# 清空框架中的内容for widget in self.image_frame.winfo_children():widget.destroy()# 布局所选图片for i in range(len(self.filenames)):self.pic_filelist.append(Image.open(self.filenames[i]).resize((200, 200)))self.imgt_list.append(ImageTk.PhotoImage(image=self.pic_filelist[i]))self.image_labellist.append(Label(self.image_frame, highlightthickness=0, borderwidth=0))self.image_labellist[i].configure(image=self.imgt_list[i])self.image_labellist[i].pack(side=LEFT, expand=True)def choose_pic(self, event=None):self.filenames.clear()self.filenames += filedialog.askopenfilenames()def main():window = tk.Tk()GUI = DisplayImage(window)window.title('投影亮度参数标定软件模块')window.geometry('1000x600')window.mainloop()if __name__ == '__main__':main()


Python GUI编程(Tkinter)笔记相关推荐

  1. Python GUI设计 tkinter 笔记

    # <Python GUI设计 tkinter菜鸟编程>学习笔记,可直接执行代码 # 排版混乱,可设置Tab缩进为2个空格查看 # 此处整个笔记为python程序,可直接运,生成各类GUI ...

  2. Python GUI编程--Tkinter

    今天看到了GUI编程,书上推荐用wxPython,去官网上看了看,发现Windows的最高支持到2.7,我用的是3.4版本,咋办,用自带的库--Tkinter呗,它是Python的默认GUI库,几乎是 ...

  3. Python GUI编程(Tkinter) 之 股票选股器

    Tkinter 编程 Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序. 由于 Tkinter 是内置到 python 的安装 ...

  4. Python GUI编程(Tkinter)

    Python 提供了多个图形开发界面的库,其中 Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 ,Tk 和 Tkinter 可以在大多数的 U ...

  5. python窗口程序-Python GUI 编程(Tkinter)

    字符串转 md5 工具(Python3 下运行): #!/usr/bin/env python # -*- coding: utf-8 -*- from tkinter import * import ...

  6. python界面-Python GUI 编程(Tkinter)

    字符串转 md5 工具(Python3 下运行): #!/usr/bin/env python # -*- coding: utf-8 -*- from tkinter import * import ...

  7. 撩小姐姐的小程序(一)----python GUI编程Tkinter

    目录 1.准备工作 2.开始学习 2.1 构建窗体 2.2 在窗体中增加组件元素和布局 2.3 针对按钮增加触发事件函数 3.编译打包成exe可执行文件 3.1 需要先安装pyinstaller 3. ...

  8. Python GUI编程—Tkinter实战一(生日快乐小程序)

    经过上一篇Tkinter常用控件的介绍,这一篇运用一些基本控件,来实现一个简单的生日快乐小程序. demo示例: import Tkinter from Tkinter import * from t ...

  9. Python GUI编程(Tkinter)——窗口

    tkinter--窗口 本章概括: 1.窗体的最小框架 2.窗体的基本设置 (1)添加标题: (2)添加图标: (3)添加背景: 3.窗体的外形设置 (1)设置透明度: (2)设置工具栏样式: (3) ...

最新文章

  1. LeetCode Partition List(链表分段)
  2. 【全栈项目上线(vue+node+mongodb)】06.nodejs服务上线(生产环境前后分离的vue项目中怎么解决跨域问题)...
  3. 趣味编程:从字符串中提取信息(参考答案 - 上)
  4. 什么是Freedoc?Freedoc是什么?
  5. 【数据库原理及应用】经典题库附答案(14章全)——第十三章:面向对象程数据库系统
  6. apt-get常用命令及工作原理
  7. c语言经典程序100txt例,C语言经典程序100例txt格式.doc
  8. Java Concurrent--java.util.Concurrent包
  9. 新手该学习Python2.x版本还是3.x版本
  10. python编程从入门到实践书中出错的地方_读书笔记「Python编程:从入门到实践」_10.文件和异常...
  11. 使用自定义端口连接SQL Server 2008的方法
  12. [ NOI 2005 ] 聪聪与可可
  13. AIX环境安装DB2 数据库
  14. python3实现json转excel
  15. git文件没有绿色红色小图标
  16. 使用Androidkiller或APKIDE编译APK文件时出现libpng error: Not a PNG file的错误
  17. MySQL创建视图的语法格式_Mysql创建视图语法及其创建种类
  18. 如何将自己的网站上传至服务器并通过域名进行访问
  19. 设计测试用例(蘑菇街web的登录页面)
  20. Android ImageView设置边框

热门文章

  1. PCL中有哪些可用的PointT类型(4)
  2. 开启tomcat的apr模式,并利用redis做tomcat7的session的共享。
  3. idea中查看类的继承关系图
  4. OpenCV探索之路(三):滤波操作
  5. sqlserver中GUID的默认值设置
  6. Android系统进程Zygote启动过程的源代码分析
  7. [论文泛读]Web服务组合综述相关论文1(3篇)
  8. 【mathematical statistics】5 distributional testing
  9. maven打包jar单独配置log4j.properites文件记录日志
  10. java如何解决高并发症,一整套Java线上故障排查技巧,爱了!