Tkinter交互式动态GUI



我目前正在为我的一位同事编写一个小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的另一侧应该显示相应的迷你游戏,例如动态变化的噪声图,他必须输入一些数字才能看到合适的信号。正如你所看到的,我目前正在使用after方法来显示文本,但我不知道如何合并这样的游戏,也不知道脚本如何等待他的(键盘(输入继续。

有人能帮我一下吗?

您可以绑定键盘输入(在本例中为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确认按钮和游戏GUI(拼接(?((

最新更新