Tkinter和随机数

时间:2014-05-03 03:25:41

标签: python random tkinter

喜欢编程并且只是学习Tkinter。根据Alan Gauld的在线教程中的一个例子写了这个。我期待一个1到10之间的随机数被放入标签,但我得到的似乎是一个介于4千万到5千万之间的随机数,接着是" getRandomNumber"。代码:

import random
from tkinter import *

class randomNumberApp:
    def __init__(self, parent=0):
        self.mainWindow = Frame(parent)
        self.fTop = Frame(self.mainWindow)
        self.fTop.pack(fill="both")
        self.lInfo = Label(self.fTop, text="Your number is:")
        self.lInfo.pack(side="left")
        self.lScore = Label(self.fTop, text=self.getRandomNumber)
        self.lScore.pack(side="left")
        self.mainWindow.pack(fill="both")

    def getRandomNumber():
        ability = random.randint(1,10)
        return ability

# top level
top = Tk()
app = randomNumberApp(top)
top.mainloop()

任何帮助都会很棒

2 个答案:

答案 0 :(得分:3)

这有效:

更改为“text = self.getRandomNumber()”并缩进“def getRandomNumber(self):”因为它更像是来自OP的代码。

import random
from tkinter import *

class randomNumberApp:
    def __init__(self, parent=0):
        self.mainWindow = Frame(parent)
        self.fTop = Frame(self.mainWindow)
        self.fTop.pack(fill="both")
        self.lInfo = Label(self.fTop, text="Your number is:")
        self.lInfo.pack(side="left")
        self.lScore = Label(self.fTop, text=self.getRandomNumber())
        self.lScore.pack(side="left")
        self.mainWindow.pack(fill="both")

    def getRandomNumber(self):
        ability = str(random.randint(1,10))
        return ability

# top level
top = Tk()
app = randomNumberApp(top)
top.mainloop()

答案 1 :(得分:0)

问题在于您正在创建一个标签,并且为了它的价值,您将提供一个功能。您不希望使用函数作为标签的文本,您希望调用函数并使用函数返回的标签。

而不是:

self.lScore = Label(self.fTop, text=self.getRandomNumber)

......你需要这样做:

self.lScore = Label(self.fTop, text=self.getRandomNumber())

此外,如果要将getRandomNumber作为方法,则需要将其定义为具有参数self,如下例所示:

class randomNumberApp:
    ...
    def getRandomNumber(self):
        ...