我目前正在为我的一位同事编写一个Python脚本,应该为他的博士防御挑战提供框架,例如他必须回答的小任务和问题。剧本本身应该指导他克服挑战,并提供任务,简介等。
我目前正在为此目的使用Tkinter。原则上,我想在屏幕上有一个画布/部分,如下面的示例所示,在其中弹出文本和简介。
import Tkinter as tk
import time
global_delay =150
counter = 0
delay = global_delay
def display_text():
global num_letters
global global_text
global label
text = global_text[counter]
num_letters = len(text) - 1
old_text = label.cget("text")+'\n'
def display():
global num_letters
global counter
global global_delay
global delay
if delay == 0:
user_text = ''
com_text = ' '
else:
user_text = 'user@hlrdbb4 ~ '
com_text = ''
print_text = old_text + user_text + str(text[1:len(text) - num_letters])+(num_letters+50-len(text))*' ' + com_text
label.config(text=print_text)
label.config(font=("Courier", 30))
num_letters-=1
if num_letters>=0:
label.after(delay, display)
elif counter<len(global_text)-1:
counter += 1
if global_text[counter][0] == 'o':
delay = 0
if global_text[counter][0] == 'i':
delay = global_delay
label.after(global_delay*10, display_text)
display()
root = tk.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.geometry("%dx%d+0+0" % (w, h))
root.title("PhD")
label = tk.Label(root, fg="green", bg='black', height=h, width=w, anchor=tk.NW)
label.pack()
global_text=['icd E:\dbb\ ','oChange directory to E:\dbb\ ','iget_PhD.exe','oError file not found','iget_PhD.exe','oError file not found','iget_PhD.exe','oExecuting get_PhD.exe','oHere are your introductions...']
display_text()
root.mainloop()
GUI的另一面应显示相应的迷你游戏,例如动态变化的噪声图,他必须输入一些数字才能看到不错的信号。如您所见,我目前正在使用后方法来显示文本,但我不知道如何合并此类游戏或脚本如何等待其(键盘)输入继续。>
有人可以帮我一下吗?
答案 0 :(得分:0)
您可以绑定键盘输入(在这种情况下为enter)或tkinter按钮,以使用Entry小部件的输入。用它执行一个函数(在本例中为回调)。如果得到所需的输入,则继续执行程序。
import tkinter as tk
root = tk.Tk()
e = tk.Entry(root)
e.pack()
def callback(*args):
print (e.get())
e.bind("<Return>",callback)
root.mainloop()
一些不错的阅读材料和额外的解释: Tkinter Confirmation buttons and game GUI (splice(?))