我想做一个小程序来改变句子的大小写,让它们听起来很讽刺。我想把它放在一个小框架中,并使用了这个教程(https://datatofish.com/entry-box-tkinter/)。我已经提取了它的一些代码并实现了它,但我认为我搞砸了
Shell不断地给我关于缺少变量的错误,我在代码中似乎找不到。你们中的一些人能找到我在哪里犯的错误吗
import random
import tkinter as tk
root= tk.Tk()
root.title('hOofDleTteRdiNGes')
canvas1 = tk.Canvas(root, width = 400, height = 300)
canvas1.pack()
entry1 = tk.Entry (root)
canvas1.create_window(200, 140, window=entry1)
def capi_sentence(sentence):
sentence.lower = entry1.get()
new_sentence = ''
number = 0 #Dummy number for tracking
for letter in sentence.lower():
if len(new_sentence)<2: #Creates the first two letter
random_number = random.randint(0,1) #This randomly decides if the letter should be upper or lowercase
if random_number==0:
new_sentence += letter.upper()
else:
new_sentence += letter
else:
if (new_sentence[number-2].isupper() and new_sentence[number-1].isupper() or new_sentence[number-2].islower() and new_sentence[number-1].islower())==True:
#Checks if the two letters before are both upper or lowercase
if new_sentence[number-1].isupper(): #Makes the next letter the opposite of the letter before
new_sentence += letter.lower()
else:
new_sentence += letter.upper()
else:
random_number = random.randint(0,1)
if random_number==0:
new_sentence += letter.upper()
else:
new_sentence += letter
number += 1 #Add one more to the tracking
label1 = tk.label(new_sentence)
button1 = tk.Button(text='hoofdletter shufflen', command=capi_sentence)
canvas1.create_window(200, 180, window=button1)
你有一些问题
您需要在末尾调用
root.mainloop()
,这样会出现一个窗口您的
capi_sentence
函数接受一个参数,但按下按钮时调用的回调函数不提供参数使用
它调用返回值为
entry1.get()
的函数在正确地传递文本后,capi_句子的第一行是不必要的(而且无论如何也没有真正意义)
您在创建标签时使用了小写
label
。您还需要传入一个父窗口小部件(例如root),并将文本作为text
关键字参数传入。最后,您需要通过打包将其添加到窗口中一些杂项提示:
你不需要
== True
在你的条件结束时;如果为true,则if将已运行您可以使用
enumerate
删除显式number
逻辑,该逻辑返回元组列表(i,item),其中item是列表中的原始项,i的索引从0到N-1。 我用这个(和其他简化)重写了下面的for循环,所以它更容易阅读相关问题 更多 >
编程相关推荐