微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在 Python 中使用 f-string 的函数中使用变量?

如何解决有没有办法在 Python 中使用 f-string 的函数中使用变量?

我有 2 个变量 n1n2。当我按下空格时 randNum 要么等于 1 要么等于 2,如果它等于 1 那么我想改变 n1 如果它等于 2 那么我想改变n2。我正在使用 .itemconfig() 来更改变量,但我不知道如何将其分配给我想要更改的变量。我试图以某种方式用 f-string 来做,但这不起作用。有什么办法吗?这是我的代码

import tkinter as tk
import random


canvas = tk.Canvas()
canvas.pack()


n1 = canvas.create_text(100,100,font="Arial 25",text="1")
n2 = canvas.create_text(100,150,text="2")


def function(event):
    if event.keysym == 'space':
        randNum = random.randint(1,2)
        canvas.itemconfig(f"n{randNum}",fill="red",text=randNum) #does not work


canvas.bind_all('<Key>',function)


tk.mainloop()

解决方法

您可以使用 tagscreate_text() 选项:

n1 = canvas.create_text(100,100,font="Arial 25",text="1",tags="n1")
n2 = canvas.create_text(100,150,text="2",tags="n2")


def function(event):
    if event.keysym == 'space':
        randNum = random.randint(1,2)
        canvas.itemconfig(f"n{randNum}",fill="red",text=randNum)
,

如果您希望文本颜色在黑色和红色之间摆动,那么这里是一种选择。

n0 = canvas.create_text(100,text="1")
n1 = canvas.create_text(100,text="2")

def function(event):
    r  = random.randrange(2)
    c = [ "red","black" ]
    if r: c.reverse()
    canvas.itemconfig( f"{n0}",fill=c[0] )
    canvas.itemconfig( f"{n1}",fill=c[1] )


canvas.bind_all( '<space>',function )
,

你需要使用标签

import tkinter as tk
import random

def function(event=None):
    rand_num = random.randint(1,2)

    # resetting the color of existing elements
    for i in range(1,3):
        canvas.itemconfig(f"tag{i}",fill="black")

    # highlighting the active one
    canvas.itemconfig(f"tag{rand_num}",fill="red")


canvas = tk.Canvas()
canvas.pack()

n1 = canvas.create_text(100,tags="tag1")
n2 = canvas.create_text(100,tags="tag2")

canvas.bind_all('<space>',function)

tk.mainloop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。