如何解决有没有办法在 tkinter 窗口内打印函数?
我看过有关此的帖子,但它们都与 while (x) == True:
我的函数没有这些。它们位于 2 个单独的文件中。请帮忙! Screenshot of pycharm
我知道这是很多代码,但我花了几个小时在这上面,我真的不明白为什么会发生这种情况。我希望完整地发布这个项目,我可以在窗口中打印该功能。在这一点上,它甚至不需要是 tkinter GUI,如果您有任何其他您认为可行的 GUI,请告诉我。提前致谢。
import random
moves = ["RU","RD","LD","LU","BL","BR","DR","DL","FL","FR","UL","UR"]
dir = ["","2"]
slen = random.randint(25,30)
def scramble_gen():
scramble = [0] * slen
for x in range(len(scramble)):
scramble[x] = [0] * 2
return scramble
def scramble_replace(ar):
for x in range(len(ar)):
ar[x][0] = random.choice(moves)
ar[x][1] = random.choice(dir)
return ar
def valid(ar):
for x in range(1,len(ar)):
while ar[x][0] == ar[x-1][0]:
ar[x][0] = random.choice(moves)
for x in range(2,len(ar)):
while ar[x][0] == ar[x-2][0] or ar[x][0] == ar[x-1][0]:
ar[x][0] = random.choice(moves)
return ar
def sprint(ar):
for x in range(len(ar)):
print(str(ar[x][0]) + str(ar[x][1]),end= " ")
s = scramble_replace(scramble_gen())'''
新文件
from tkinter import *
import random
from scrambler import *
window = Tk()
window.title("Bryson's Scrambler")
lbl = Label(window,text = sprint(valid(s)))
lbl.grid(column=0,row=0)
txt = Entry(window,width=10)
txt.grid(column=1,row=0)
def clicked():
lbl.configure(text="Button was clicked !!")
btn = Button(window,text="Click Me",command=clicked)
btn.grid(column=2,row=0)
window.mainloop()
window.mainloop()
解决方法
你必须比这更具体一些,
我可以在窗口中打印该函数。
您想将哪个函数打印到窗口中?如果您尝试使用该函数应该“打印”的任何对象来更新现有窗口,则不要完全打印它并返回对象本身。即如果你的意思是功能 sprint(
然后您应该能够从 Tkinter 调用该函数,获取它返回的内容并将其添加到窗口中,然后 refresh 它。
,代替使用 print()
创建单个字符串并使用 return
def sprint(ar):
text = ""
for x in range(len(ar)):
#print(str(ar[x][0]) + str(ar[x][1]),end= " ")
text += str(ar[x][0]) + str(ar[x][1]) + " "
return text
然后它会起作用
lbl = Label(window,text=sprint(valid(s)))
编辑:
更具可读性
def sprint(ar):
text = ""
for a,b in ar:
text += f'{a}{b} '
return text
或更短
def sprint(ar):
return ' '.join(f'{a}{b}' for a,b in ar)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。