标签: tkinter-canvas

在while循环中更改tkinter画布中的图像

我的全部代码都在这里

使用 tkinter 的画布,我试图创建一个小游戏,让人们练习学习高音谱号上的音符。

最初显示随机音符,用户必须选择正确的音符。如果学生得到正确答案,我将无法编辑画布以显示新笔记的图像。

有人可以解释一下我的代码有什么问题吗?

while True:
    randomNote = randint(0, 11)
    path = noteFiles[randomNote]
    correctNote = notes[randomNote]
    img = Image.open(path)
    tk_img = ImageTk.PhotoImage(img)
    canvas.create_image(505, 200, image=tk_img)

    root.mainloop()
    if correctNote == noteChosen:
        ''' User got last note right '''
        canvas.delete("all")
Run Code Online (Sandbox Code Playgroud)

python tkinter python-imaging-library python-3.x tkinter-canvas

5
推荐指数
1
解决办法
1778
查看次数

如何将 TKinter 画布线从虚线更改为实线?

在我的 Python 脚本中,我最初将画布线创建为实线。然后在某个事件下,我使用下面的语法将行更改为破折号。

self.canvas.itemconfig(line, dash=(4, 4))
Run Code Online (Sandbox Code Playgroud)

将其改回实线的命令是什么?

python tkinter tkinter-canvas

4
推荐指数
1
解决办法
1719
查看次数

滚动框架无法使用 tkinter 正确调整大小

基于在 Tkinter 中动态更改画布的滚动区域的示例,我尝试实现一个框架,您可以在其中使用 tkinter 在可滚动框架中添加和删除条目。我的问题是,删除条目后,保存项目的框架不会调整大小。添加条目时,它会正确调整大小。我update_layout()在这两种情况下都打电话:

from tkinter import *

class ScrollableContainer(Frame):
    """A scrollable container that can contain a number of messages"""

    def __init__(self, master, **kwargs):
        Frame.__init__(self, master, **kwargs) #holds canvas & scrollbars
        # configure row and col to take additional space if there is some
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)

        # create canvas
        self.canv = Canvas(self, bd=0, highlightthickness=0)

        # create scrollbars
        self.hScroll = Scrollbar(self, orient='horizontal',
                                 command=self.canv.xview)
        self.hScroll.grid(row=1, column=0, sticky='we')
        self.vScroll = Scrollbar(self, orient='vertical',
                                 command=self.canv.yview)
        self.vScroll.grid(row=0, column=1, sticky='ns') …
Run Code Online (Sandbox Code Playgroud)

python tkinter scrollbar tkinter-canvas

4
推荐指数
1
解决办法
3645
查看次数

增加 tkSimpleDialog 窗口大小

如何增加或定义 tkSimpleDialog 框的窗口大小?

import Tkinter, tkSimpleDialog
root = Tkinter.Tk()
root.withdraw()
test = tkSimpleDialog.askstring("testing", "Enter your search string text")
print test
Run Code Online (Sandbox Code Playgroud)

python tkinter python-2.7 tkinter-canvas

4
推荐指数
2
解决办法
4284
查看次数

Python、Tkinter:如何使用 ID 或标签获取所有画布对象的句柄?

我想获取画布上所有矩形的句柄,并带有特定标签,以将它们放置在网格几何管理器中(用户可以通过鼠标拖动来移动它们,然后我想为他“重新排序”它们)。我没有矩形的手柄,但它们都有相同的标签(“moveable_canvas”)。从那里我可以转换为项目 id (.find_withtag) 但现在怎么办?我可以将 ID 设置为 .itemconfigure 等,但如何对它们进行“网格化”?

moveable_canvases = self.canv.find_withtag("moveable_canvas")
for canvas_id in moveable_canvases:
    ???.grid(...)
Run Code Online (Sandbox Code Playgroud)

python tkinter tkinter-canvas

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

如何在python-tkinter的画布文本上放置轮廓?

我在画布中央创建了一个白色文本,但我的背景非常丰富多彩,其中一部分颜色非常浅,所以我的句子的某些角落没有出现。我找不到任何设置边框或轮廓的选项。我能做什么?

python text tkinter options tkinter-canvas

4
推荐指数
1
解决办法
3236
查看次数

使用鼠标在python tkinter画布上绘制并获取指向列表的点?

我正在使用 tkinter 开发 Python 应用程序。我想要做的是在画布坐标上绘制,点将记录到列表中,以便我稍后进行计算。如果不可能,您会推荐任何其他可以做到这一点的工具或 GUI 平台吗?

编辑:到目前为止,我拥有的是一个可以从列表中获取点并在画布上绘制的应用程序。我也想要相反的工作方式。

from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import showerror
from tkinter import ttk
import tkinter
import threading

another_points = []

class Waveform(Frame):
   def __init__(self, master):
      ttk.Frame.__init__(self, master)
      self.master = master

      self.points = [10, 20, 30]
      self.create_widget()

   def create_widget(self):

      self.LoadFrame = ttk.LabelFrame(self.master, text = "Load")
      self.LoadFrame.pack(side = "left", padx = 10, pady = 10)
      self.PlotFrame()

      self.anotherFrame = ttk.LabelFrame(self.LoadFrame, text = "Browse")
      self.anotherFrame.pack(fill = "both", padx = 10, pady = 10) …
Run Code Online (Sandbox Code Playgroud)

user-interface tkinter python-3.x tkinter-canvas

4
推荐指数
1
解决办法
6708
查看次数

4
推荐指数
3
解决办法
6695
查看次数

使用 python 更改 Windows 中的鼠标指针速度

我使用的是Windows10系统。

我有一个 Tkinter 画布,上面绘制了图像。当鼠标指针悬停在画布上时,有什么方法可以减慢鼠标指针的速度吗?我已经检查了这个链接这个链接,但答案似乎不稳定..

更具体地说,是否可以在普通 Python/Tkinter 中减慢鼠标指针速度?

python tkinter hotkeys python-3.x tkinter-canvas

4
推荐指数
1
解决办法
5233
查看次数

tkinter - 为什么会有像 bbox 这样的东西?

现在我更多地使用 tkinter Canvas,我想知道 bbox 的使用。

对我来说,我使用 bbox 来获取元素的坐标,但画布已经有一个方法来返回一个项目的坐标。那么他们为什么要发明像 bbox 这样的东西呢?

这里比较官方的 tcl 描述:

盒子

pathName bbox tagOrId ?tagOrId tagOrId ...?

返回一个包含四个元素的列表,为由 tagOrId 参数命名的所有项目提供一个近似边界框。该列表的形式为“x1 y1 x2 y2”,因此所有命名元素的绘制区域都在由左侧 x1、右侧 x2、顶部 y1 和底部 y2 限定的区域内。返回值可能会高估实际边界框几个像素。如果没有项目与任何 tagOrId 参数匹配,或者如果匹配的项目有空的边界框(即它们没有可显示的内容),则返回一个空字符串。

坐标

pathName coords tagOrId ?coordList?

查询或修改定义项目的坐标。如果未指定坐标,则此命令返回一个列表,其元素是由 tagOrId 命名的项目的坐标。如果指定了坐标,则它们将替换命名项的当前坐标。如果 tagOrId 引用多个项目,则使用显示列表中的第一个。

我看到了这些之间的区别,但无法成像,在这种情况下我需要一个 bbox 而不是坐标?有人可以教我更好地理解这一点吗?

python tkinter tkinter-canvas

4
推荐指数
1
解决办法
2143
查看次数