标签: tkinter-canvas

Tkinter Canvas将项目移至顶级

我有一个Tkinter Canvas小部件(Python 2.7,而不是3),在这个Canvas上我有不同的项目.如果我创建一个与旧项目重叠的新项目,它将在前面.我现在如何在旧创建的项目前面移动旧项目,或者甚至在"画布"上的所有其他项目前移动旧项目?

目前为止的示例代码:

from Tkinter import *
root = Tk()
canvas = Canvas(root,width=200,height=200,bg="white")
canvas.grid()
firstRect = canvas.create_rectangle(0,0,10,10,fill="red")
secondRect = canvas.create_rectangle(5,5,15,15,fill="blue")
Run Code Online (Sandbox Code Playgroud)

现在我希望firstRect位于secondRect之前.

python tkinter widget tkinter-canvas

6
推荐指数
1
解决办法
2万
查看次数

你可以在创建后更改Python Canvas对象的属性吗?

我正在尝试模拟一个美国交通信号灯,在一个矩形上有3个圆圈,所有这些都是在一套Canvas上绘制的.模拟应该通过按以下顺序每2秒更改显示哪个灯来反映"动画":绿色>黄色>红色>绿色等永远.

我能想到的唯一方法是使用canvas.move(),canvas.after(),canvas.update()模式移动填充的椭圆形对象,一次叠加一个未填充的圆.我已经得到了逻辑,以适当的速度和正确的顺序移动一个圆圈.问题是,我只是实例化了一个充满"绿色"的圆圈,但我无法使用此方法将其更改为"黄色"或"红色".看看canvas.delete("填充")似乎很愚蠢,并且每隔2秒在一个新的地方重新绘制一个不同的填充,因为这对于这样一个简单的程序来说有很多工作要做.

问题1:有没有办法可以随意改变fill我填充的Canvas对象的选项,使用某种方法或其他方法?

问题2:我是否错误地接近了这种情况?有没有更好的方法来模拟这个?

python tkinter tkinter-canvas

6
推荐指数
1
解决办法
2万
查看次数

Python,Tkinter - 将文本插入画布窗口

我有一个Tkinter画布,其中填充了使用create_textcreate_window方法创建的文本和画布窗口或小部件.我在画布上放置的小部件是文本小部件,我想在创建和放置文本后插入文本.如果可能的话,我无法弄清楚如何做到这一点.我意识到你可以在创建后使用它们编辑它们canvas.itemconfig(tagOrId, cnf),但不能以这种方式插入文本.这个问题有方法解决吗?

python text tkinter tkinter-canvas

6
推荐指数
1
解决办法
3万
查看次数

matplotlib在tkinter画布中的缩放功能

我一直在试图传递一些脚本(使用Tkinter的)的GUI的背后,到目前为止迄今该所打开的任何数据在Tkinter的画布显示(使用matplotlib绘制吧)做到了.

我唯一的问题是matplotlib中的标准缩放/滚动(使用鼠标左键"移动"绘图和鼠标右键"缩放")在画布中无法访问,基本上是功能matplotlib绘图窗口中的'4尖十字'.

我认为这需要创建我自己的处理程序,但我认为必须有一种方法来使用matplotlib的默认处理程序?我也看过这个问题中提到的'滚动'画布选项,但那些似乎只是改变了绘图区域的大小而不是放大/缩小数据,我也不想再添加任何按钮来操纵情节区.

我目前最简单的代码:

#! /usr/bin/env python
from Tkinter import *
import matplotlib.pyplot as plt
import matplotlib.backends.backend_tkagg as tkagg
import tkFileDialog

class App():
    def __init__(self,master):
        # VARIABLES
        self.inputFile = ""
        self.fig = plt.Figure()
        self.canvas = tkagg.FigureCanvasTkAgg(self.fig, master = master)
        self.canvas.get_tk_widget().pack()
        self.canvas.draw()

        # FRAME
        frame = Frame(master)
        master.title("MassyTools 0.1.1 (Alpha)")

        # VARIABLE ENTRIES

        # BUTTONS

        # MENU
        menu = Menu(root)
        root.config(menu = menu)

        filemenu = Menu(menu)
        menu.add_cascade(label="File", menu=filemenu)
        filemenu.add_command(label="Open Input File", command = self.openFile)
        calibmenu = Menu(menu)
        menu.add_cascade(label="Calibrate",menu=calibmenu)
        calibmenu.add_command(label="Open …
Run Code Online (Sandbox Code Playgroud)

python tkinter matplotlib tkinter-canvas

6
推荐指数
1
解决办法
3165
查看次数

单击python时单击tkinter矩形更改颜色

所以我有这个代码绘制一个简单的矩形:

from tkinter import *

root = Tk()
canvas = Canvas(root, width = 500, height = 500)
canvas.pack()

canvas.create_rectangle(100, 100, 400, 400, fill='black')


mainloop()
Run Code Online (Sandbox Code Playgroud)

现在我一直在寻找各处,似乎找不到改变填充颜色的方法,理想情况下我希望能够在点击时这样做.

我实际上将使用它来改变由我编写的函数生成的六边形的颜色

create_polygon()
Run Code Online (Sandbox Code Playgroud)

但我想它的工作方式与矩形相同.

我意识到代码可能需要完全重构.

python tkinter tkinter-canvas

6
推荐指数
1
解决办法
1万
查看次数

TKinter Canvas“破折号”选项的行为不符合预期

canvas.create_line(50, 500, 950, 500, dash=(5, 1), tags="splitDistance")
Run Code Online (Sandbox Code Playgroud)

这将创建一条如下所示的行:

XXXXX XXXXX XXXXX XXXXX
Run Code Online (Sandbox Code Playgroud)

5 个破折号,1 个空格,然后重复,如本文档所述

但当将1更改为任意值时,间隙大小不会改变

dash=(5, 100)

XXXXX XXXXX XXXXX XXXXX
Run Code Online (Sandbox Code Playgroud)

另一个奇怪的行为是,第一个参数仅在可被 5 整除时才会更改结果,例如:(5, 10, 15, 20...)

dash=(1, 1)

X X X X X X X X X X X X
Run Code Online (Sandbox Code Playgroud)

dash=(4, 1)

X X X X X X X X X X X X
Run Code Online (Sandbox Code Playgroud)

dash=(5, 1)

XXXXX XXXXX XXXXX XXXXX
Run Code Online (Sandbox Code Playgroud)

这是程序和结果的图像:

程序图像和结果

python tkinter python-3.x tkinter-canvas

6
推荐指数
1
解决办法
4862
查看次数

圆形按钮tkinter python

我正在尝试使用tkinter为我的脚本获取圆形按钮。

我发现以下代码:

from tkinter import *
import tkinter as tk

class CustomButton(tk.Canvas):
    def __init__(self, parent, width, height, color, command=None):
        tk.Canvas.__init__(self, parent, borderwidth=1, 
            relief="raised", highlightthickness=0)
        self.command = command

        padding = 4
        id = self.create_oval((padding,padding,
            width+padding, height+padding), outline=color, fill=color)
        (x0,y0,x1,y1)  = self.bbox("all")
        width = (x1-x0) + padding
        height = (y1-y0) + padding
        self.configure(width=width, height=height)
        self.bind("<ButtonPress-1>", self._on_press)
        self.bind("<ButtonRelease-1>", self._on_release)

    def _on_press(self, event):
        self.configure(relief="sunken")

    def _on_release(self, event):
        self.configure(relief="raised")
        if self.command is not None:
            self.command()
app = CustomButton()
app.mainloop()
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

TypeError: __init__() missing 4 required …
Run Code Online (Sandbox Code Playgroud)

python tkinter tkinter-canvas

6
推荐指数
5
解决办法
2万
查看次数

如何在 Windows 上获取 Tkinter 窗口的 HWND?

如何HWND在Windows上的python3中获取Tkinter窗口的?

  • 如果可能的话,我想获取 Tkinter 窗口的本机窗口句柄。
  • 我需要窗口的HWND或来执行自定义绘图操作。HDC

有没有办法获取HWNDCanvas任何其他子组件?

有一种方法可以列出当前进程创建的所有窗口。我还可以迭代前面列出的任何窗口的子窗口。这将是这个问题的丑陋的解决方案。

如果 Tkinter 不直接公开句柄,请发布任何替代解决方案。

windows tkinter python-3.x tkinter-canvas

6
推荐指数
1
解决办法
5006
查看次数

如何在 tkinter 上隐藏和显示画布项目?

我知道这一点packpack_forget可用于显示或隐藏小部件。哪些是画布上项目的等效命令?

注意:最好保留完整的物品信息,包括它的位置。pack/不是这种情况pack_forget,您需要在使用 pack 时再次通知位置。

python tkinter tkinter-canvas

6
推荐指数
1
解决办法
7064
查看次数

创建 tkinter Canvas 后如何更改其背景颜色?

我知道这canvas = tkinter.Canvas(bg='red')会创建一个背景色为红色的画布。由于背景颜色是在创建新画布时选择的,有什么方法可以稍后在程序中更改背景颜色而不创建新画布?

我能想到的最好的解决方案是创建一个大矩形,用所需的背景颜色覆盖整个屏幕,但实际的背景颜色在执行此操作后保持不变,并在清除画布时显示。

python tkinter tkinter-canvas

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

tkinter ×10

tkinter-canvas ×10

python ×9

python-3.x ×2

matplotlib ×1

text ×1

widget ×1

windows ×1