精华内容
下载资源
问答
  • 你好,我在python上使用Tkinter包有问题。我想创建一个包含两个主要小部件的窗口,其中一个是画布,稍后将显示带有单元格的网格。在初始化画布时,我使用“create_rectangle”将所需对象填充到画布中。此外,当点击...

    你好,我在python上使用Tkinter包有问题。我想创建一个包含两个主要小部件的窗口,其中一个是画布,稍后将显示带有单元格的网格。在初始化画布时,我使用“create_rectangle”将所需对象填充到画布中。此外,当点击一个单元格(出于测试原因),画布应该改变其在矩形区域的颜色。但是,当最初显示窗口时,看不到任何对象(预期结果将只有白色矩形),并且只有在画布上单击时,区域才会根据需要更改其颜色。

    在浏览互联网时,我尝试了pack()和create_rectangle()-方法顺序的几种变体。代码如下:from tkinter import *

    from tkinter.ttk import *

    import cells

    GRID_WIDTH = 15

    GRID_HEIGHT = 15

    class Ui(Frame):

    """ Class to represent the ui of conways game of life"""

    def __init__(self, parent, grid):

    self.parent = parent

    self.grid = grid

    Frame.__init__(self, parent)

    self.__setup()

    def __setup(self):

    """ Method to setup the components of the ui """

    self.parent.title("Conway's game of life")

    self.pack()

    #Setup a frame to hold control components

    frame_cntrl = Frame(self)

    frame_cntrl.pack(side = RIGHT, anchor="n")

    self.__setup_cntrl_components(frame_cntrl)

    #Setup a frame to hold the Grid

    self.canvas = Canvas(self)

    self.canvas.pack(side = LEFT)

    self.__draw_grid()

    self.canvas.bind("", self.__canvas_clicked)

    def __setup_cntrl_components(self, parent):

    """ Method to setup the control elements of the ui"""

    #Setup a label for the generation

    self.lb_generation = Label(parent, text="dummy")

    self.lb_generation.pack(side = TOP)

    #Setup a button for iteration

    self.bt_iteration = Button(parent, text="Iterate")

    self.bt_iteration.pack(side = TOP)

    def __draw_cell(self, x, y):

    """ Draws a cell on the canvas"""

    width, height = self.canvas.winfo_width(), self.canvas.winfo_height()

    color = "black" if self.grid.cell_alive(x, y) else "white"

    x0 = width * x / self.grid.width + 1

    x1 = width * (x + 1) / self.grid.width

    y0 = height * y / self.grid.height + 1

    y1 = height * (y + 1) / self.grid.height

    self.canvas.create_rectangle(x0, y0, x1, y1, width=0, fill=color)

    def __draw_grid(self):

    """ Method to setup the grid itself"""

    width, height = self.canvas.winfo_width(), self.canvas.winfo_height()

    for i in range(0, self.grid.width):

    for j in range(0, self.grid.height):

    self.__draw_cell(i, j)

    def __canvas_clicked(self, event):

    """ Method for when the cell was clicked """

    x, y, width, height = event.x, event.y, self.canvas.winfo_width(), self.canvas.winfo_height()

    cell_x = int(x / width * self.grid.width)

    cell_y = int(y / height * self.grid.height)

    self.grid.switch_cell(cell_x, cell_y)

    self.__draw_cell(cell_x, cell_y)

    if __name__ == "__main__":

    Ui(Tk(), cells.Grid(GRID_WIDTH, GRID_HEIGHT)).mainloop()

    展开全文
  • Tkinter Canvas

    2020-04-06 11:42:41
    Tkinter Canvas 觉得有用的话,欢迎一起讨论相互学习~ 感谢莫烦 演示效果 创建windows window = tk.Tk() window.title('my window') window.geometry('500x500') 循环刷新窗口 window.mainloop() # 不断刷新主...

    Tkinter Canvas

    觉得有用的话,欢迎一起讨论相互学习~


    我的微博我的github我的B站

    感谢莫烦

    演示效果

    在这里插入图片描述

    创建windows

    window = tk.Tk()
    window.title('my window')
    window.geometry('500x500')
    

    循环刷新窗口

    window.mainloop()  # 不断刷新主窗口
    

    创建Canvas

    • canvas = tk.Canvas(window, bg=‘blue’, height=100, width=200)
      • 主画布
    • image_file = tk.PhotoImage(file=‘ins.gif’)
      image = canvas.create_image(10, 10, anchor=‘nw’, image=image_file)
      • 加载图片,设置图片路径,放在画布中,anchor参数控制锚点-即图片相对于哪个位置进行摆放,锚点参数如下图所示,(10,10)表示相对于锚点的坐标。
        在这里插入图片描述
    • x0, y0, x1, y1= 50, 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, y1+30, start=0, extent=180) # 画扇形,并且从0度打开,180度结束
      rect = canvas.create_rectangle(100, 30, 100+20, 30+20) # 正方形和长方形
      canvas.pack() # 注意,在末尾要将整个对象pack到窗口中。

    动作moveit function

    • def moveit():
      canvas.move(rect, 0, 2) # 表示将正方形横轴不变,纵轴向下移动2个单位,因为原点从左上角开始,因此+2是纵坐标向下移动的意思
    • b = tk.Button(window, text=‘move’, command=moveit).pack() # 将button关联到moveit函数中
    展开全文
  • tkinter Canvas

    2019-01-09 13:12:56
    Canvas 画布 -Canvas 部件 ...import tkinter as tk window = tk.Tk() window.title('my window') window.geometry('200x200') canvas = tk.Canvas(window,bg='blue',height=100,width=200) ima...

    Canvas 画布

    -Canvas 部件

    -触发功能

    需求:

    锚定的点

    import tkinter as tk
    
    window = tk.Tk()
    window.title('my window')
    window.geometry('200x200')
    
    canvas = tk.Canvas(window,bg='blue',height=100,width=200)
    image_file=tk.PhotoImage(file='ins.gif')
    image = canvas.create_image(0,0,anchor='nw',image=image_file)  ######锚定的点
    x0,y0,x1,y1=50,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,y1+30,start=0,extent=180)
    rect=canvas.create_rectangle(100,30,120,50)
    canvas.pack()
    def move_it():
        canvas.move(rect,0,2)
    b=tk.Button(window,text='move',command=move_it).pack()
    
    window.mainloop()

     

     

    展开全文
  • If the value of this option is greater than zero, the vertical view in the window will be constrained so that the canvas y coordinate at the top edge of the window is always an even multiple of ...

    查看-xview/-yview选项的文档,特别是yscrollincrement选项。所以是的,你可以改变步长。-yscrollincrement

    Specifies an increment for vertical scrolling, in any of the usual forms permitted for screen distances. If the value of this option is greater than zero, the vertical view in the window will be constrained so that the canvas y coordinate at the top edge of the window is always an even multiple of yScrollIncrement; furthermore, the units for scrolling (e.g., the change in view when the top and bottom arrows of a scrollbar are selected) will also be yScrollIncrement. If the value of this option is less than or equal to zero, then vertical scrolling is unconstrained.

    以及yview scroll number what

    This command adjusts the view in the window up or down according to number and what. Number must be an integer. What must be either units or pages. If what is units, the view adjusts up or down in units of the yScrollIncrement option, if it is greater than zero, or in units of one-tenth the window's height otherwise. If what is pages then the view adjusts in units of nine-tenths the window's height. If number is negative then higher information becomes visible; if it is positive then lower information becomes visible.

    来自canvas的Tk手册页。

    展开全文
  • 我正在尝试使用Tkinter Canvas(self._canvas)来使用create_window函数创建窗口.该函数的窗口字段是Tkinter Frame(self._tableFrame).有人可以帮我解决一下如何让self._tableFrame自动扩展到self._canvas的大小(即使...
  • python-Tkinter教程之Canvas

    千次阅读 2018-11-05 13:50:33
    python-Tkinter教程之Canvas篇(1) 2013年10月25日 16:15:26 做一个有魅力的程序员 阅读数:4897 标签: python canvas tkinter create_rectangle 更多 个人分类: python 版权声明:本文为博...
  • 今天我们用tkinter来实现小人走路的动画效果,主要用到了移动鼠标事件和canvas画布对于图像的绘制。小时候大家一定在本子上画过连环画吧?其实tkinter实现动画的原理就和它是一样的,通过快速翻阅(更新图片)让静态...
  • 这是一篇对于近来闲着无聊搞的tkinter小程序的汇总。首先说一下版本是python3.6,在python3.x以后,tkinter已经是内置模块了,不需要额外安装。这是在网上找的Tkinter知识框架图:tkinter内部的组件和方法很多,对于...
  • 为了520能够博得女友欢心,我设计了一个用来表白的程序,主要用到了tkinter的画布...其原理是用canvas显示图片,所谓的滑动和点击等等,其实就是图片的更换;下拉则是利用鼠标事件来移动图片,实现和手机下拉相同的...
  • 按钮和画布 - Python tkinter(Buttons and Canvas - tkinter)我有一个代码,理想情况下应该有一个4行16列的键盘设计。 正如你在照片中看到的那样,有一个“A”按钮已经熄灭。 它应该在右上角。 任何人都可以告诉我...
  • tkintercanvas

    2020-03-25 14:55:40
    import tkinter as tk window = tk.Tk() window.title(‘画布’) window.geometry(‘200x250’) #创建一个画布 canvas = tk.Canvas(window,bg=‘white’,height=200,width=200) image_file = tk.PhotoImage(file=...
  • python tkinter canvas

    2019-10-09 00:57:36
    Canvas 的坐标系统是绘图的基础,其中点 (0,0) 位于 Canvas 组件的左上角,X 轴水平向右延伸,Y 轴垂直向下延伸。 create_arc:绘制弧。 create_bitmap:绘制位图。 create_image:绘制图片。 create_line()...
  • Python Tkinter Canvas

    2020-08-03 08:46:37
    请看视频。 tkinter中的canvas学习,简单了解其代码特征
  • 主要介绍了python tkinter canvas使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • tkinter canvas简单教学

    2018-12-26 17:40:47
    创建线 参考文献 http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/create_line.html ...import tkinter as tk master = tk.Tk() CANVAS_WIDTH=100 CANVAS_HEIGHT=100 w=tk.Canvas(master, ...
  • 分类目录——tkinter 先看效果 其中蓝色区域为一块画布(Canvas)区域,在画布上放置了图片,画了圆形、方形、扇形;下方的按钮可以调用方法移动左边的矩形 Canvas应用实例 canvas = tk.Canvas(window, bg='blue', ...
  • 最后日期列表框必须只有整数,如图所示2.Data file link 当前结果在第1张图片中 我需要第二张照片的结果 通过按钮1实现的数据文件图片#3 from Tkinter import * import tkFont , time import ttk,csv,sys,os import ...
  • tkinter-canvas详解

    2020-07-08 09:28:58
    在前文tkinter-place详解中,讲解anchor属性时,用到了canvas。如果你不知道什么时canvas,精读本文就对了! canvas的中文意思就是"画布"。在GUI中,canvas是一个非常基础的概念,基本上任何跟GUI相关的编程语言、库...
  • Tkinter05_Canvas

    2018-11-16 20:27:26
    Tkinter05_Canvas 标签(空格分隔): Tkinter 文章目录Tkinter05_CanvasCanvas 组件画布对象概念总结 Canvas 组件 Canvas 是一个通用的组件,它通常用于显示和编辑图形。可以用它来绘制直线、圆形、多边形、甚至是...
  • Tkinter 学习-Canvas

    万次阅读 2018-07-08 14:32:44
    The Tkinter Canvas WidgetCanvas(画布)组件为 Tkinter 的图形绘制提供了基础。Canvas 是一个高度灵活的组件,你可以用它绘制图形和图表,创建图形编辑器,并实现各种自定义的小部件。何时使用 Canvas 组件? ...
  • 1.创建from tkinter import *root=Tk()cv=Canvas(root,bg='black')cv.pack()root.mainloop()2.创建itemfrom tkinter import *root=Tk()cv=Canvas(root,bg='white')cv.create_rectangle(10,10,110,110)cv.pack()root....
  • TkinterCanvas组件

    2018-07-19 16:51:36
    一、简介 Canvas组件,是一个可以绘制界面的组件, Canvas组件是通用的组件,通常用来显示或编辑图形,可以...from tkinter import * root = Tk() w = Canvas(root, width=200, height=100) w.pack() w.create_...
  • Tkinter画布-Canvas

    2019-10-05 07:56:03
    Python - Tkinter画布-Canvas: Canvas是一个长方形的面积,图画或其他复杂的布局。可以放置在画布上的图形,文字,部件,或是帧 Canvas是一个长方形的面积,图画或其他复杂的布局。可以放置在画布上的图形,文字,...
  • tkintercanvas基本用法.docx
  • TkinterCanvas

    千次阅读 2018-11-05 13:53:57
    TkinterCanvas篇 2017年09月01日 16:42:52 大个土豆 阅读数:3440更多 ''' Created on 2017年8月31日 @author: Nick ''' #_*_coding:utf-8_*_ import tkinte...
  • python tkintercanvas

    2018-03-30 21:55:57
    跟着教程写的,教程:点击打开链接我写的比教程多了几个...源码:import tkinter as tk window=tk.Tk() window.title('canvas') window.geometry('400x400') ca=tk.Canvas(window, bg='green', width=300,heigh...
  • 使用画布的语法如下:语法w=canvas(parent,options)可能选项的列表如下。Sn选项描述1bd表示该边界的宽度,默认的宽度是 22bg它代表了画布的背景颜色3confine它被设置为使画布unscrollable以外的滚动区域4cursor在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,207
精华内容 482
关键字:

canvastkinter