我正在开发一个 Tkinter 项目,该项目基本上类似于游戏“MadTakes”的应用程序
这个怎么运作:
玩家被要求“输入名词”或代词或任何类型的单词。一旦他输入了所有的单词,那个人就可以按“开始!” 名词或形容词等有空格的故事将由玩家输入的单词填充。故事将因此完成,并将通过标签框显示。
该程序的工作方式是,
我基本上做到了,问题的数量将决定通过 for 循环添加多少行问题和输入框。起初我在获取用户在每个条目框中输入的单个条目时遇到问题,但我能够解决这个问题,如下面的代码所示。
要查看我正在尝试实现的程序的工作示例,MadTakes是我的项目所基于的。该网站有一个我想要获得的随机函数的工作示例。希望能帮助到你!我的代码如下。
这个帖子的原因是,
我在问题的输入框旁边做了一个按钮,我希望将一个随机名词、形容词等插入到它旁边的输入框中。
不幸的是,这并没有发生。我能做的最好的事情就是让随机名词出现 ( ) 到循环entry.insert
产生的最后一个输入框中。for
NounList = ["Apple", "Penguin", "Star", "Magnet", "Computer", "Anime"]
def display(): #for displaying inside of a frame
entries1 = []
answer1 = []
def execute():
for txt in entries1:
answer1.append(txt.get()) #gets what the user has inputted to each of the entry boxes and appends it to a list
try:
#the questions to ask on the left of the Entry boxes:
TypeList=["Enter a noun ", "Enter a noun ", "Enter a verb ", "Enter a place ","Enter the place as before"]
for count, i in enumerate(TypeList):
label = Label(frame, text=i+' ')
label.grid(row=count, column=0) #Each question is in a label on a different row
entry = Entry(frame, width=15, borderwidth=0)
entries1.append(entry) #The values that the user enters is appended to the list entries1
entry.grid(row=count, column=1) #Entry box placed next to the label
def randnoun(): #Random function to get a random noun from the list
global NounList
x = random.randint(0, (len(NounList)-1))
random_noun = NounList[x]
entry.delete(0, END)
entry.insert(0,random_noun) #Theoretically this should enter the random noun to the entry box next to the random button
if "noun" in i.lower():
btn = Button(frame, width=8, text='RANDOM', command= randnoun)
btn.grid(row=count, column=2) #Random button placed on the right of Entry box
#This button will start the "process" of taking the values of the entry boxes and eventually putting it in answer 1
btn = Button(frame, width=14, text='GO!'command=execute)
btn.grid(row=count+1, column=1, pady=2)
例如,
输入名词: [随机的]
输入一个动词: [随机的]
输入形容词: | [随机的]
当我按下 [RANDOM] 按钮时,这应该是输出:
输入名词: 苹果公司 [随机的]
输入一个动词: [随机的]
输入形容词: | [随机的]
并且answer1
必须包含“Apple”作为用户的第一个条目。(我的意思是它应该在列表中以正确的顺序排列。如果用户自己输入所有条目框,它应该与列表的外观没有什么不同)。answer1
是我存储用户给出的所有值然后将其放入故事中的地方。
我当前的代码实现的是:
输入名词: [随机的]
输入一个动词: [随机的]
输入形容词: | || [随机的]
因为根据我的理解,entries1.append(entry)
获取相应条目框的值但在代码块中的任何其他位置尝试entry.insert
它会导致它被插入到最后一个条目框中。有什么解决方法吗?
我计划为所有问题制作这样的随机函数,这样会有更多if "verb" in i.lower()"
类型的语句和更多randverb
等randadj
函数。他们都需要解决这个问题才能工作。
注意:此代码块位于主窗口中的框架内。我已经编辑了这段代码的某些部分,以便更容易地表达我的问题。要提供更多信息,我可以提供项目整个代码的链接。