Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中生成自动更新结果的画布文本?_Python_Python 3.x_Tkinter - Fatal编程技术网

如何在python中生成自动更新结果的画布文本?

如何在python中生成自动更新结果的画布文本?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在尝试制作一个掷骰子模拟器,我希望结果以文本形式显示在红色框中。 我创建了一个画布来创建一个矩形框,在画布上我创建了一个txt行,结果应该显示在哪里,但我不知道如何在canvax矩形框中显示结果。 我是IT的一年级生,我真的在为如何做到这一点而挣扎 from tkinter import * from tkinter import messagebox from PIL import Image, ImageTk import random root = Tk() root.geomet

我正在尝试制作一个掷骰子模拟器,我希望结果以文本形式显示在红色框中。 我创建了一个画布来创建一个矩形框,在画布上我创建了一个txt行,结果应该显示在哪里,但我不知道如何在canvax矩形框中显示结果。 我是IT的一年级生,我真的在为如何做到这一点而挣扎

from tkinter import *
from tkinter import messagebox
from PIL import Image, ImageTk
import random


root = Tk()
root.geometry('700x700')
root.title('Dice Rolling Simulation')

bg = PhotoImage(file ="bg.png")
label = Label(root, image=bg)
label.place(x=0, y=0, relwidth =1, relheight = 1)



l0 = Label(root, text="")
l0.pack()

l1 = Label(root, text="DICE SIMULATOR", fg="white",
               bg='#000009',
               font="Helvetica 30 bold italic")
l1.pack()

# images
dice = ['die1.png', 'die2.png', 'die3.png', 'die4.png', 'die5.png', 'die6.png']
image1 = ImageTk.PhotoImage(Image.open(random.choice(dice)))
label1 =Label(root, image=image1)
label1.image = image1
label1.pack(expand=True)

count = 0
size = 26


def rolling_dice():
    image1 = ImageTk.PhotoImage(Image.open(random.choice(dice)))
    # update image
    label1.configure(image=image1)
    # keep a reference
    label1.image = image1


def contract():
    global count, size
    if count <=10 and count > 0:
        size -=2
        my_button.config(font=("Helvetica", size))
        count -=1
        root.after(10, contract)

def expand():
    global count,size
    if count <10:
        size +=2
        my_button.config(font=("Helvetica", size))
        count +=1
        root.after(10, expand)

    elif count == 10:
        contract()

def exit():
    response=messagebox.askyesno('Exit','Are you sure you want to exit?')
    if response:
        root.destroy()

canvas= Canvas(root, width = 200, height = 50, bg = "red")
canvas.pack(pady = 5)
canvas.create_text(100, 25,fill="darkblue",font="Times 20 italic bold",
                        text= image1)

my_button = Button(root, text = "ROLL THE DICE", command = lambda : [expand(), rolling_dice()],
                   font = ("Helvetica",24), fg="blue")

my_button.pack(pady=20)

exit = Button(root, text = "Exit", command = exit,  font = ("Helvetica",24), fg="red")
exit.pack(pady=10)



root.mainloop()
从tkinter导入*
从tkinter导入消息框
从PIL导入图像,ImageTk
随机输入
root=Tk()
根几何体('700x700')
root.title('骰子滚动模拟')
bg=PhotoImage(file=“bg.png”)
标签=标签(根,图像=背景)
label.place(x=0,y=0,relwidth=1,relheight=1)
l0=标签(根,文本=)
l0.pack()
l1=标签(根,text=“骰子模拟器”,fg=“白色”,
bg='#000009',
font=“Helvetica 30粗体斜体”)
l1.pack()
#图像
dice=['die1.png'、'die2.png'、'die3.png'、'die4.png'、'die5.png'、'die6.png']
image1=ImageTk.PhotoImage(Image.open(random.choice(骰子)))
label1=标签(根,图像=图像1)
label1.image=image1
标签1.pack(expand=True)
计数=0
尺寸=26
def滚动骰子():
image1=ImageTk.PhotoImage(Image.open(random.choice(骰子)))
#更新图像
标签1.configure(image=image1)
#保留一份推荐信
label1.image=image1
def contract():
全局计数、大小
如果计数为0:
尺寸-=2
my_button.config(字体=(“Helvetica”,大小))
计数-=1
根。后(10,合同)
def expand():
全局计数、大小

如果count您需要保存对文本项的引用,然后使用
itemconfigure
方法更改文本:

text_item = canvas.create_text(100, 25,...)
...
canvas.itemconfigure(text_item, text="something")