我正在用 gui 写刽子手脚本。我写了一个公式来为游戏单词中的每个字母放置一个黑条,这是由输入字段给出的。这些栏以小部件的水平中间为中心。我的问题是编写一个可以制作标签的公式,以在黑线上方显示正确猜测的字母。
我尝试制作一个具有 1000x1 网格的框架,并将标签放在其中,这样它们就不会被网格中的其他小部件干扰。由于网格的长度与我尝试使用与黑条相同的公式的小部件相同,但它不适用于任何超过一个字母的单词。
这是我到目前为止写的剧本,还没有完成。我是 python 的新手,所以我们将不胜感激。 L 用作我的试用小部件,尝试使其与行中的第一个栏匹配。
from tkinter import *
#----------------------------------------------------GUI
root = Tk()
root.geometry('1000x800+250+50')
root.configure(bg="green")
canvas = Canvas(root, width=1000, height=600, bg="blue", highlightthickness=0)
canvas.grid(row=0, column=0, rowspan=600, columnspan=1000)
frame2 = Frame(width=1000, height=2, bg="black")
frame2.grid(row=470, column=0, columnspan=1000)
frame = Frame(width=1000, height=200, bg="green")
frame.grid(row=600, column=0, rowspan=200, columnspan=1000, sticky="nsew")
#ordning: Galge, pinne upp, pinne höger, stöd i hörn, rep, huvud, kropp, armar, ben
grass = canvas.create_rectangle(0,400,1000,600,outline="green", fill="green")
pic1 = canvas.create_line(400, 360, 400, 280, 600, 280, 600, 360, width=30, fill="#3C2A21")
hill = canvas.create_arc(200, 300, 800, 600, outline="green", extent=180, fill="green")
pic2 = canvas.create_line(500, 280, 500, 50, width=30, fill="#3C2A21")
pic3 = canvas.create_line(500, 65, 700, 65, width=30, fill="#3C2A21")
pic4 = canvas.create_line(500, 100, 550, 65, width=30, fill="#3C2A21")
pic5 = canvas.create_line(697, 80, 697, 120, width=5, fill="black")
pic6 = canvas.create_oval(717, 160, 677, 120, width=3, fill="black")
pic7 = canvas.create_line(697, 160, 697, 240, width=7, fill="black")
pic8 = canvas.create_line(680, 220, 697, 170, 714, 220, width=7)
pic9 = canvas.create_line(680, 300, 697, 240, 714, 300, width=7)
userInput = Entry()
userInput.grid(row=500, column=510)
def start():
word = userInput.get()
alphabetTest = 0
for cha in word:
if cha.isalpha() == False:
alphabetTest = 1
else:
alphabetTest = alphabetTest
if alphabetTest == 0:
userInput.destroy()
playButton.destroy()
word.upper()
wordlenght = 0
wordlist = []
for a in word:
wordlist.append(a)
wordlenght = wordlenght + 1
label1 = Label(root, text=wordlist)
label1.grid(row=680, column=510)
blackBarStart = 500 - 20 * (wordlenght - 0.5)
blackBarEnd = blackBarStart + 20
print(blackBarStart)
print(blackBarEnd)
for b in wordlist:
canvas.create_line(blackBarStart, 480, blackBarEnd, 480, width=3, fill="black")
blackBarStart = blackBarStart + 40
blackBarEnd = blackBarEnd + 40
i = Label(frame2,width= 142, bg="green")
i.grid(column=0, columnspan=1000)
L = Label(frame2, text="L", width=1, height=1)
L.grid(row=0, column=int(500 - 20*(wordlenght-0.5)))
print(int(500 - 20 * (wordlenght - 0.5)))
else:
characterWarning = Label(root, text="Please only enter letters")
characterWarning.grid(row=580, column=510)
playButton = Button(root, text="skriv ut", command=start)
playButton.grid(row=600, column=510)
root.mainloop()