python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
作者:minmin很潇洒 发布时间:2021-12-21 19:37:29
标签:python,Tkinter,子窗口,绘图
注意主窗口一定要为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()
上面的代码运行后将出现以下的两个窗口:
二、# 关于在Label中显示图片的大坑
1、在Label 中显示图片需要用到tkinter 与pillow这两个模块
单独运行一个在tkinter上显示的图片没有问题,但是如果把这个显示图片的函数放在一个Button的command中,那么就算用二级界面也不行了,这个是一个非常大的坑,但是解决方法也非常非常的简单。只要将处理图片的两行代码放在外面就行了。如图:
来源:https://blog.csdn.net/min954584739/article/details/56842950


猜你喜欢
- 一、准备工作安装最新的Go1、由于Google被墙的原因,如果没有VPN的话,就到这里下载:http://www.golangtc.com/
- 如何做一个计数器并让人家申请使用? 第一步:创建一个计数器(最简单的数字计数器,不是图片式的):&nbs
- 1 前言在 Java 和 js 中,lambda箭头函数是十分常见的操作,这种表达方式在使用时非常的简便。在python的语法中也有应用场景
- 前言在db中存储json格式的数据,相信大家都或多或少的使用过,那么在查询这个json结构中的数据时,有什么好的方法么?取出String之后
- 以下是它们的共同点: 1. 关于左右表的概念。左表指的是在SQL语句中排在left join左边的表,右表指的是排在left join右边的
- 写在前面:本节主要讲述一些基本的,常用的SQL语句,而非数据库方面的基本知识。数据库方面的知识留待以后再讲,现在就我们平常常用的一些SQL语
- 有时候我们会有这样的需求,需要把一些数据从别的库导入到另外的一个库中,而这些数据是用CSV文件存放的。对于MySql数据库我们有两种方式:一
- 文件操作的一般内容:# 文件的操作# 打开文件 open 打开已存在文件 或者创建一个新文件open('./Test.txt'
- 背景在开发中,我们常常会遇到一些耗时任务,举个例子:上传并解析一个 1w 条数据的 Excel 文件,最后持久化至数据库。在我的程序中,这个
- 在并发编程中,多个Goroutine访问同一块内存资源时可能会出现竞态条件,我们需要在临界区中使用适当的同步操作来以避免竞态条件。Go 语言
- 可能由于操作系统不同,或者在安装SQL 2008的时候已经安装SQL其他版本,因此可能会遇到问题,那么这时我们的实际经验和动手测试的能力也是
- 导语电脑桌面文件太多查找起来比较花费时间,并且凌乱的电脑桌面也会影响工作心情,于是利用python根据时间自动建立当日文件夹,这样就可以把桌
- 1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表
- 题目:获得输入正整数 N,反转输出该正整数,不考虑异常情况。
- 前言在JavaScript中,数据类型分为两大类,一种是基础数据类型,另一种则是复杂数据类型,又叫引用数据类型基础数据类型:数字Number
- 前言在php开发过程中,获取文件扩展名是非常常见的需求。比如我们在上传文件的时候,首先需要判断文件类型是否为我们允许上传的类型。这个时候就需
- Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print
- 如下所示:# -*- coding:utf8 -*-import osimport shutilimport numpy as npimpo
- 使用Tkinter(py2.7)text文本框中输入内容在界面中显示–较为规整的代码:import Tkinter as tkclass W
- 如何在PyCharm中安装PaddlePaddle?1.基本环境Python:3.8.5PyCharm:COMMUNITY 2019.32.