python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例


Posted in Python onMarch 04, 2020

注意主窗口一定要为tk.Tk(),在主窗口上通过button的点击相应子函数创建子窗口,注意此时创建出来的窗口必须是Toplevel,否则出错。

至于用图片在窗口上绘图,则按代码所示即可。

# -*- coding: utf-8 -*-

"""
Created on Wed Oct 26 20:32:52 2016

@author: min
"""

import Tkinter as tk
from PIL import Image, ImageTk 
global attackTime
attackTime=1


def show1():
  top1=tk.Toplevel()
  image = Image.open('random.jpg') 
  img = ImageTk.PhotoImage(image)
  canvas1 = tk.Canvas(top1, width = image.width*2 ,height = image.height*2, bg = 'white')
  canvas1.create_image(0,0,image = img,anchor="nw")
  canvas1.create_image(image.width,0,image = img,anchor="nw")
  canvas1.pack()  
  top1.mainloop()


def show2():
  top1=tk.Toplevel()
  image = Image.open('random.jpg') 
  img = ImageTk.PhotoImage(image)
  canvas = tk.Canvas(top1, width = image.width ,height = image.height, bg = 'white')
  canvas.create_image(0,0,image = img,anchor="nw")
  canvas.pack()  
  top1.mainloop()


def showMessage():
  top=tk.Toplevel()
  l=tk.Label(top,text='Attacks cost '+str(attackTime)+' s',width=20)
  l.pack()
  top.mainloop()
  
root=tk.Tk()
b1=tk.Button(root,text='start1',command=show1)
b1.pack()
b2=tk.Button(root,text='start2',command=showMessage)
b2.pack()
root.mainloop()

补充知识:关于Python tkinter中出现的坑(界面Tk()+图片显示)

一、关于Python3的tkinter模块

1、首先关于创建Python的窗口是导入 import tkinter 或者 from tkinter import * 这两种形式。关于创建tkinter 的大家耳熟能详的就是直接 win=Tk()[在导入方式为from tkinter import *形式下],但是还有另一种方法用来创建窗口那就是:win=Toplevel(),这个代表的是创建二级界面,就是直接创建两个界面,这个方法非常实用,应用在多个函数调用并生成Python窗口上面。小逸亲自尝试了一下,相当的好哈哈~~~~

2、Toplevel()实际操作。

首先,我们在Python3的环境下写下以下简单的代码:

from tkinter import *

win=Toplevel()

win.title=("这是一个二级界面")

win.geometry("500x300+10+10")

win.mainloop()

上面的代码运行后将出现以下的两个窗口:

python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例

二、# 关于在Label中显示图片的大坑

1、在Label 中显示图片需要用到tkinter 与pillow这两个模块

单独运行一个在tkinter上显示的图片没有问题,但是如果把这个显示图片的函数放在一个Button的command中,那么就算用二级界面也不行了,这个是一个非常大的坑,但是解决方法也非常非常的简单。只要将处理图片的两行代码放在外面就行了。如图:

python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例

以上这篇python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python随机生成数模块random使用实例
Apr 13 Python
python中__call__内置函数用法实例
Jun 04 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
通过shell+python实现企业微信预警
Mar 07 Python
PyTorch使用cpu加载模型运算方式
Jan 13 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
python中Matplotlib绘制直线的实例代码
Jul 04 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 #Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 #Python
在python tkinter界面中添加按钮的实例
Mar 04 #Python
Python tkinter布局与按钮间距设置方式
Mar 04 #Python
python 按钮点击关闭窗口的实现
Mar 04 #Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 #Python
python虚拟环境模块venv使用及示例
Mar 04 #Python
You might like
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
php抓即时股票信息
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
php字符串分割函数用法实例
2015/03/17 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
限制复选框的最大可选数
2006/07/01 Javascript
任意位置显示html菜单
2007/02/01 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python的常用模块之collections模块详解
2018/12/06 Python
python中rb含义理解
2020/06/18 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
数学国培研修感言
2014/02/13 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
项目负责人岗位职责
2015/02/15 职场文书
签约仪式致辞
2015/07/30 职场文书
2019入党申请书格式
2019/06/25 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python