Tkinter与随机数

2024-10-01 11:41:53 发布

您现在位置:Python中文网/ 问答频道 /正文

新的编程和学习Tkinter。这是根据艾伦·高尔德的在线教程中的一个例子写的。我希望在标签中放入一个介于1到10之间的随机数,但我得到的似乎是一个介于4000万到5000万之间的随机数,后面是“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()

任何帮助都很好


Tags: importselftopdefrandomfillframepack
2条回答

这是有效的:

改为“文本=self.getRandomNumber()”和缩进的“def getRandomNumber(self):”,因为它更像是操作中的代码

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()

问题是你正在创建一个标签,而对于它的值,你给了一个函数。您不想使用函数作为标签的文本,而是希望调用函数并使用函数为标签返回的值。在

而不是这样:

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

。。。你需要这样做:

^{pr2}$

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

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

相关问题 更多 >