我创建了一个乌龟图形程序,用于绘制与用户键入的键盘上的任何键相关联的字母。用户还可以按下乌龟画布底部的tkinter按钮,使用海龟模块的numinput()
小部件更改每个字母的高度/宽度。我还创建了一个tkinter下拉菜单(附加到tkinter菜单按钮)(现在),每次用户更改时,只会写入新更改的字母宽度。菜单/菜单按钮是通过以下代码块创建的,该代码块位于更改字母高度/宽度的函数之下,因此值必须为global
:
global hjk
hjk = Menubutton(text = "Previous widths", state = DISABLED)
hjk.pack(side = "left")
hjk.menu = Menu(hjk, tearoff = 0)
hjk["menu"] = hjk.menu
global do
do = hjk.menu
hjk.pack()
每次更改宽度时,菜单按钮都会启用,新宽度通过下面的方法附加到菜单上,该方法也嵌入在代码块下方,允许根据用户输入更改宽度:
global letter_width
hjk.config(state = NORMAL)
user_width_input = (numinput("New Letter Width", "Please set the new letter width (Number between 10-170): ", minval = 10, maxval = 170))
letter_width = letter_width if user_width_input is None else user_width_input
global widthy
widthy = IntVar()
# The following writes the changed letter width to the menu each time it is changed by the user
global hlf
hlf = []
hlf.append(letter_width)
for letter_width in hlf:
do.add_command(label = str(letter_width), command = lambda letter_width=letter_width: changeletterwidth(letter_width))
编辑:我的问题在于上面changeletterwidth
菜单命令中嵌入的do.add_command
命令。该函数应该将字母宽度全局更改为用户从菜单中选择的值。我为changeletterwidth
创建了以下内容:
def changeletterwidth(width):
global letter_width
widthy.set(width)
然而,不起作用,因为即使我从下拉菜单中选择了一个值,字母宽度仍然与以前相同。 我在这里做错了什么以及如何解决? 非常感谢有关此问题的任何帮助! :)
答案 0 :(得分:0)
它是固定的。最后想出来了,这很简单,解决方案完全飞到了我的脑海。我所要做的就是将update()
和listen()
添加到changeletterwidth
函数中,如下所示:
def changeletterwidth(width):
global letter_width
letter_width = (width)
update() #<-- Here...
listen()#<-- and here.