我最近學了一點python。我試圖在框架小部件上制作一個猜數字游戲。按下亂數按鈕以生成亂數。Enter 按鈕然后從輸入框中獲取輸入并與生成的亂數進行比較。為了測驗它,程式會顯示一個標簽,顯示生成的亂數。當我輸入與生成的數字相同的數字時,它說它不相等。它唯一一次說它相等是當我輸入 0(零)時。我還有一些行告訴我這些值是什么型別,只是為了確保我比較相同的型別。
from random import randint
from tkinter import *
root = Tk()
root.title('Guess Number Final')
root.geometry('500x500')
directionFrame = Frame(root, width = 200, height = 200, highlightbackground = 'red',
highlightthickness = 3)
directionFrame.grid(row = 0, column = 0, padx = 20, pady = 20, ipadx = 20, ipady = 20)
randomNum = IntVar()
newguessInt = IntVar()
def randomize():
randomNum = randint(0,10)
randomStr.set(randomNum)
def enterGuess():
newguessInt = int(number_input.get())
newRandom = randomNum.get()
if (newguessInt == newRandom):
guess_var.set('Your guess is right.')
else:
guess_var.set('Your guess is wrong.')
guess_str.set(type(newguessInt))
random_str.set(type(newRandom))
##### Random Button #####
randomBtn = Button(directionFrame, text = 'Random Number', command = randomize)
randomBtn.pack()
##### Random Variable #####
randomStr = StringVar()
randomStr.set('Number')
##### Guess Variable #####
guess_var = StringVar()
guess_var.set('Your guess is...')
##### typeGuessVariable #####
guess_str = StringVar()
guess_str.set('Type')
##### randomNumVariable #####
random_str = StringVar()
random_str.set('Type')
##### Random Label #####
randomLbl = Label(directionFrame, textvariable = randomStr)
randomLbl.pack()
##### Number Entry Box #####
number_input = Entry(directionFrame)
number_input.pack()
##### Enter Button #####
enterBtn = Button(directionFrame, text = 'Enter Guess', command = enterGuess)
enterBtn.pack()
##### Your Guess Label #####
yourGuessLbl = Label(directionFrame, textvariable = guess_var)
yourGuessLbl.pack()
##### GuessInt Label ######
guessIntLbl = Label(directionFrame, textvariable = guess_str)
guessIntLbl.pack()
##### Random Label ######
randomNumLbl = Label(directionFrame, textvariable = random_str)
randomNumLbl.pack()
mainloop()
uj5u.com熱心網友回復:
您已經宣告了許多 tkinter 變數,使您混淆使用錯誤的變數進行比較。
實際上只使用兩個 tkinter 變數就足夠了:
randomNum對于隨機生成的數字guessNum用于用戶猜測號碼
from random import randint
from tkinter import *
root = Tk()
root.title('Guess Number Final')
root.geometry('500x500')
directionFrame = Frame(root, width=200, height=200, highlightbackground='red', highlightthickness=3)
directionFrame.grid(row=0, column=0, padx=20, pady=20, ipadx=20, ipady=20)
randomNum = StringVar(value='Number')
guessNum = StringVar(value='')
def randomize():
randomNum.set(randint(0,10))
def enterGuess():
ok = randomNum.get() == guessNum.get().strip()
resultLabel['text'] = f'Your guess is {"right" if ok else "wrong"}.'
##### Random Button #####
randomBtn = Button(directionFrame, text='Random Number', command=randomize)
randomBtn.pack()
##### Random Label #####
randomLbl = Label(directionFrame, textvariable=randomNum)
randomLbl.pack()
##### Number Entry Box #####
number_input = Entry(directionFrame, textvariable=guessNum)
number_input.pack()
##### Enter Button #####
enterBtn = Button(directionFrame, text='Enter Guess', command=enterGuess)
enterBtn.pack()
##### Result Label #####
resultLabel = Label(directionFrame, text='Your guess is ...')
resultLabel.pack()
mainloop()
uj5u.com熱心網友回復:
這一行:
randomNum = randint(0,10)
創建一個新的區域變數randomNum并將其分配給常規 Pythonint值。randomNum外部作用域中的原始IntVar值仍然是默認值為零。我認為你想做的是:
randomNum.set(randint(0, 10))
即設定IntVar您創建指向一個新的隨機整數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/365962.html
標籤:Python 蟒蛇-3.x 特金特 tkinter-入口
