我不确定如何将功能的输入和输出从控制台传输到界面。我不知道我是否应该执行销毁功能并每次创建一个新框架。
from tkinter import *
states = ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho",
"Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi",
"Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio",
"Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia",
"Washington", "West Virginia", "Wisconsin", "Wyoming"]
capitals = ["Montgomery", "Juneau", "Phoenix", "Little Rock", "Sacramento", "Denver", "Hartford", "Dover", "Tallahassee", "Atlanta", "Honolulu", "Boise",
"Springfield", "Indianapolis", "Des Moines", "Topeka", "Frankfurt", "Baton Rouge", "Augusta", "Annapolis", "Boston", "Lansing", "St. Paul", "Jackson",
"Jefferson City", "Helena", "Lincoln", "Carson City", "Concord", "Trenton", "Santa Fe", "Albany", "Raleigh", "Bismarck", "Columbus",
"Oklahoma City", "Salem", "Harrisburg", "Providence", "Columbia", "Pierre", "Nashville", "Austin", "Salt Lake City", "Montpelier", "Richmond",
"Olympia", "Charleston", "Madison", "Cheyenne"]
def geofunction():
i = 0
for element in states:
value = 1
while value == 1:
test = input(element + ": ")
if test == capitals[i]:
print("You got it!")
value = 0
else:
print("Try again")
i += 1
print("Game Finished!")
root = Tk()
topFrame = Frame(root)
topFrame.pack()
bottomFrame = Frame(root)
bottomFrame.pack()
theLabel = Label(topFrame, text = "Welcome to the Geography Quizzer!\nClick below to get started!")
theLabel.pack(fill=BOTH)
getstarted = Button(bottomFrame, text="Get started!", fg="black", bg="tan", command=geofunction)
getstarted.pack(fill=BOTH)
root.mainloop()
您无需每次都破坏框架,可以进行更改。您可以在巡视框架中放置标签,然后更改框架的文本。例如,如果要更改文本,theLabel
可以执行以下操作:
theLabel['text'] = 'new text'
root.update()
广告以使用输入,我相信您希望将输入更改为GUI中的Entry Widget。Entry小部件是一个小部件,用户可以在其中输入输入,并且可以使用Entry.get()或将tkinter变量用作Entry.textvariable来访问它,例如:
from tkinter import *
states = ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho",
"Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi",
"Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio",
"Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia",
"Washington", "West Virginia", "Wisconsin", "Wyoming"]
capitals = ["Montgomery", "Juneau", "Phoenix", "Little Rock", "Sacramento", "Denver", "Hartford", "Dover", "Tallahassee", "Atlanta", "Honolulu", "Boise",
"Springfield", "Indianapolis", "Des Moines", "Topeka", "Frankfurt", "Baton Rouge", "Augusta", "Annapolis", "Boston", "Lansing", "St. Paul", "Jackson",
"Jefferson City", "Helena", "Lincoln", "Carson City", "Concord", "Trenton", "Santa Fe", "Albany", "Raleigh", "Bismarck", "Columbus",
"Oklahoma City", "Salem", "Harrisburg", "Providence", "Columbia", "Pierre", "Nashville", "Austin", "Salt Lake City", "Montpelier", "Richmond",
"Olympia", "Charleston", "Madison", "Cheyenne"]
counter = 0
root = Tk()
def geofunction():
global counter
def get_answer():
global counter
if input_entry.get() == capitals[counter]:
theLabel['text'] = "You got it!"
counter += 1
input_text['text']=states[counter]+":"
else:
theLabel['text'] = "Try again"
if counter == len(states):
theLabel['text'] = "Game Finished!"
input_entry.destroy()
getstarted.pack_forget()
input_text = Label(text=states[counter]+":")
input_text.pack()
input_entry = Entry()
input_entry.pack()
Button(text='answer', command=get_answer).pack()
topFrame = Frame(root)
topFrame.pack()
bottomFrame = Frame(root)
bottomFrame.pack()
theLabel = Label(topFrame, text = "Welcome to the Geography Quizzer!\nClick below to get started!")
theLabel.pack(fill=BOTH)
getstarted = Button(bottomFrame, text="Get started!", fg="black", bg="tan", command=geofunction)
getstarted.pack(fill=BOTH)
root.mainloop()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句