我是Python编程的新手,我正在学习如何创建用户界面。我想创建一个非常基本的界面,它具有以下流程:使用while循环,界面显示包含在问题列表中的所有问题。每次出现问题时,问题下都会出现两个按钮(是 - 否)。只有在单击其中一个时,界面才会显示下一个问题。 我在这附上我试过的代码。
import tkinter as tk
questions=['Question 1','Question 2','Question 3','Question 4', 'Question 5']
root = tk.Tk()
root.minsize(300, 300)
answers=['Yes','No']
b_list = []
def ask():
count=0
while count<len(questions):
lab=tk.Label(root,text=questions[count])
lab.pack()
count+=1
for i in range(2):
b = tk.Button(root, text = answers[i],command=ask)
b.grid(row = 0, column = i)
b_list.append(b)
root.mainloop()
此类代码根本不起作用。我想也是因为我在while循环中犯了一个错误,要求显示所有问题,而不是一次显示。有没有想过让这些代码工作? 谢谢你的时间!!
答案 0 :(得分:2)
使代码无法运行有两个主要原因:
我不清楚为什么要存储按钮以及用户保存结果的地方。
这是我的代码:
{{1}}
答案 1 :(得分:1)
这也可以以面向对象的方式完成,这可能会更好地适应未来的打样。
请参阅下面脚本的注释版本以获得解释和示例:
from tkinter import *
import random
class App:
def __init__(self, root):
self.root = root
self.array = ["Question1", "Question2", "Question3", "Question4", "Question5"] #list containing questions
self.answer = [] #empty list for storing answers
self.question = Label(self.root, text=self.array[len(self.answer)]) #creates a text label using the element in the 0th position of the question list
self.yes = Button(self.root, text="Yes", command=self.yescmd) #creates button which calls yescmd
self.no = Button(self.root, text="No", command=self.nocmd) #creates button which calles nocmd
self.question.pack()
self.yes.pack()
self.no.pack()
def yescmd(self):
self.answer.append("yes") #adds yes to the answer list
self.command() #calls command
def nocmd(self):
self.answer.append("no") #adds no to the answer list
self.command() #calls command
def command(self):
if len(self.answer) == len(self.array): #checks if number of answers equals number of questions
self.root.destroy() #destroys window
print(self.answer) #prints answers
else:
self.question.configure(text=self.array[len(self.answer)]) #updates the text value of the question label to be the next question
root = Tk()
App(root)
root.mainloop()
这基本上只是在我们只是配置label
以显示问题list
中的下一个元素而不是销毁它或弹出list
的意义上的不同之处