Python 3.5:打印画布文本

Python 3.5:打印画布文本,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,有人能和我分享一下如何打印添加到画布对象的文本小部件的文本吗?在下面的代码中,我希望当鼠标移动到文本上时系统返回“hello”的值,但结果显示为“1”。不知道为什么。有人能帮我吗 非常感谢 import tkinter from tkinter import * def show_text(event): print (canvas.text) master = tkinter.Tk() canvas = tkinter.Canvas(master, width = 200, he

有人能和我分享一下如何打印添加到画布对象的文本小部件的文本吗?在下面的代码中,我希望当鼠标移动到文本上时系统返回“hello”的值,但结果显示为“1”。不知道为什么。有人能帮我吗

非常感谢

import tkinter
from tkinter import *


def show_text(event):
    print (canvas.text)

master = tkinter.Tk()
canvas = tkinter.Canvas(master, width = 200, height = 100)
canvas.pack()
canvas.bind('<Enter>',show_text)
canvas.text = canvas.create_text(20, 30, text="hello")

mainloop()
导入tkinter
从tkinter进口*
def显示_文本(事件):
打印(canvas.text)
master=tkinter.Tk()
canvas=tkinter.canvas(母版,宽度=200,高度=100)
canvas.pack()
canvas.bind(“”,显示文本)
canvas.text=canvas.create_text(20,30,text=“hello”)
mainloop()
根据以下内容:

通过创建 文本对象:

id = C.create_text(x, y, option, ...)
这将返回画布C上文本对象的对象ID

现在,您必须修改代码,如下所示:

import tkinter
from tkinter import *


def show_text(event):
    print (canvas.itemcget(obj_id, 'text'))

master = tkinter.Tk()
canvas = tkinter.Canvas(master, width = 200, height = 100)
canvas.pack()
canvas.bind('<Enter>',show_text)
obj_id = canvas.create_text(20, 30, text="hello")

mainloop()
导入tkinter
从tkinter进口*
def显示_文本(事件):
打印(canvas.itemcget(obj_id,'text'))
master=tkinter.Tk()
canvas=tkinter.canvas(母版,宽度=200,高度=100)
canvas.pack()
canvas.bind(“”,显示文本)
obj_id=canvas.create_text(20,30,text=“hello”)
mainloop()

跟进(参见以下文档:

导入tkinter
从tkinter进口*
从tkinter导入ttk
def显示_文本(事件):
打印(canvas.itemcget(canvas.text,'text'))
#在sch_标签中写入文本“hello”以替换文本“此处显示信息”的命令
sch_Label.config(文本='hello!')
master=tkinter.Tk()
canvas=tkinter.canvas(母版,宽度=200,高度=100)
canvas.pack()
canvas.bind(“”,显示文本)
canvas.text=canvas.create_text(20,30,text=“hello”)
pad1=ttk.笔记本(主)
pad1.pack(侧面=右侧,展开=1,填充=“两侧”)
tab1=框架(pad1)
pad1.add(表1,text=“附表”)
焊盘1.组件(侧面=右侧)
sch_Label=ttk.Label(表1,text='此处显示的信息')
sch_标签包装(侧边=“顶部”,锚定=“w”)
mainloop()

非常感谢,这正是我想要的。我能有一个关于这个的后续问题吗?除了打印“你好”,我还想写“你好”当鼠标打开时,我无法找到一种方法来引用除事件小部件之外的特定对象。你有什么想法吗?我根据你的版本附上下面的代码。非常感谢。你知道,我一直在编写VB和Python的新版本,所以真的不知道如何使用对象引用系统工作。你的建议将节省我很多时间!从tkinter导入tkinter导入*def show_text(事件):打印(canvas.itemcget(canvas.text,'text'))#在Schu标签中写入文本“hello”的命令,以替换文本“此处显示的信息”master=tkinter.Tk()canvas=tkinter.canvas(master,宽度=200,高度=100)canvas.pack()canvas.bind(“”,show_text)canvas.text=canvas.create_text(20,30,text=“hello”)pad1=ttk.Notebook(master)pad1.pack(side=RIGHT,expand=1,fill=“both”)tab1=ttk.Frame(pad1)pad1.add(tab1,text=“Schedule”)pad1.pack(side=RIGHT)schu Label=ttk.Label(tab1,text='此处显示的信息)schu Label.pack(side=“top”,anchor=“w”)mainloop()
import tkinter
from tkinter import *
from tkinter import ttk

def show_text(event):
    print (canvas.itemcget(canvas.text, 'text'))
    #The command of writing text 'hello' in sch_Label to replace the text 'the info shows here'
    sch_Label.config(text = 'hello!')

master = tkinter.Tk()
canvas = tkinter.Canvas(master, width = 200, height = 100)
canvas.pack()
canvas.bind('<Enter>',show_text)
canvas.text = canvas.create_text(20, 30, text="hello")

pad1 = ttk.Notebook(master)
pad1.pack(side=RIGHT, expand=1, fill="both")
tab1 = Frame(pad1)
pad1.add(tab1, text = "Schedule")
pad1.pack(side=RIGHT)
sch_Label = ttk.Label(tab1, text='The info shows here')
sch_Label.pack(side="top", anchor="w")
mainloop()