Я довольно новичок в Python, но я стараюсь учиться, когда я иду. Я использую малину Pi, и я использую Python версии 3.2.3. Мой вопрос: у меня есть текстовый виджет в моем кадре, который позволяет пользователям добавлять текст. У меня есть кнопка под названием «код запуска», и при нажатии на нее вызывается функция, которая должна проверять ввод из текстового поля. Если символ в алфавитном порядке, он печатает на ярлыке приветственное сообщение, и мой балл должен увеличиться на 5 пунктов, если вход не в алфавитном порядке, появляется сообщение об ошибке. Я попытался использовать оператор if, но работает только секция else. Какие-либо предложения? Мой код ниже:Python tkinter- получение пользовательского ввода и проверка его
import tkinter as tk
from tkinter import ttk
score = 0
class Game(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.wm_title(self, "Game")
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
menubar = tk.Menu(container)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="Exit", command=quit)
menubar.add_cascade(label="File", menu=filemenu)
tk.Tk.config(self, menu=menubar)
self.frames = {}
for F in (StartPage, Py2Page1):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column = 0, sticky = "nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
self.columnconfigure(0,weight=1)
self.columnconfigure(1,weight=1)
label = tk.Label(self, text="Title")
label.grid(row=0,column=0, columnspan=2)
label1 = tk.Label(self, text ="Add text here")
label1.grid(row=1,column=0, columnspan=2, pady=10)
button1 = ttk.Button(self, text="Start", command=lambda: controller.show_frame(Py2Page1))
button1.grid(row=2,column=0, columnspan=2,pady=10)
class Py2Page1(tk.Frame):
def __init__(self, parent,controller):
tk.Frame.__init__(self, parent)
result = tk.StringVar()
self.columnconfigure(0,weight=1,minsize=640)
self.columnconfigure(1,weight=1,minsize=640)
label = tk.Label(self, text="Title!")
label.grid(row=0,column=0,columnspan=2)
self.status = tk.Label(self)
self.status.grid(row=0,column=1,sticky="e",padx=30)
label2 = tk.Label(self, text ="""SubTitle""")
label2.grid(row=1,column=0)
label3 = tk.Label(self, text ="""
Add text here....
""", justify="left")
label3.grid(row=2,column=0,sticky="n")
self.user_input = tk.Text(self,wrap="word")
self.user_input.grid(column=1,row=2)
button4 = ttk.Button(self,text="Run Code", command = self.checking)
button4.grid(column=1,row=3)
button5 = ttk.Button(self,text="Clean", command = self.clear)
button5.grid(column=1,row=4)
self.output = tk.Label(self)
self.output.grid(column=1,row=5,sticky='w', pady=10,padx=10)
def checking(self):
answer = self.user_input.get('1.0',tk.END)
if answer.isalpha():
result = "Hello " + answer
scorechanged= score =+ 5
else:
result = "Please enter your name again"
self.output.config(text=result)
self.status.config(text=scorechanged)
def clear(self):
self.user_input.delete('1.0',tk.END)
app = Game()
app.geometry("1280x720")
app.mainloop()
Благодаря
В блоке 'else' в' check() 'добавьте' print (answer) ', чтобы вы могли видеть, что он оценивает и выясняет, почему он терпит неудачу. Кроме того, исправьте 'scorechanged = score = + 5'. – TigerhawkT3
ваш отступ выглядит полностью привинченным. Является ли ваш фактический код таким? Если нет, пожалуйста, отформатируйте вопрос, чтобы код работал. –