如何从Tkinter中的函数返回变量?

时间:2017-12-03 10:39:36

标签: python python-3.x tkinter

我一直试图制作一个简单的骰子滚动GUI,你按下一个按钮和一个骰子滚动,并在标签中给你输出。当我运行我的代码时,我得到“diceOutput”未定义的错误。这是我的代码:

Configuration cfg = new Configuration(Configuration.VERSION_2_3_21);
        cfg.setClassForTemplateLoading(FTLUtility.class, ftlRootUrl);
        cfg.setNumberFormat("computer"); // this will show the number without formatting 

2 个答案:

答案 0 :(得分:1)

您需要使用布局管理器在窗口中包含标签和按钮。我在这里使用了.pack()

您不需要全局变量diceOutput

然后,您需要在单击按钮后将新骰子卷指定给文本标签:

from tkinter import *
import random

window = Tk()
window.title("Dice")

def rollDice():
    dice_roll_result = str(random.randint(1,6))
    outlbl['text'] = dice_roll_result

roll = Button(window, text="Roll", command=rollDice)
roll.pack()
outlbl = Label(window, text='')
outlbl.pack()

window.mainloop()

答案 1 :(得分:0)

正如Reblochon Masque所示,您不需要textvariable=更改Label中的文字

...但如果您使用textvariable=,则必须使用课程StringVar() / IntVar() /等。
并且您必须使用variable.set()更改StringVar() / IntVar() /等中的值  它将更改Label

中的文字

(顺便说一句:要获得价值,你必须使用variable.get()

import tkinter as tk
import random

# --- functions ---

def roll_dice():
    dice_output.set( random.randint(1, 6) )

# --- main ---

window = tk.Tk()
window.title("Dice")

roll = tk.Button(window, text="Roll", command=roll_dice)
roll.pack()

dice_output = tk.StringVar()

output = tk.Label(window, textvariable=dice_output)
output.pack()

window.mainloop()