1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是我制作的一個(gè)課程,以便它支持此類活動(dòng)。
from tkinter import *
class Custom(Entry): #inheriting from the Entry class
def ret(self):
if self.get() == '': # if empty then assign
return 'Unknown'
else:
return self.get() # else give the same thing out
root = Tk()
root.title("Form")
name = Label(root, text="Name", width=20,bg = "black", fg="red")
name.place(x=150, y=50)
a = Custom(root, width=20, bg = "black", fg="red") #instantiating using all the same option you did before
a.place(x=150, y=100)
print(a.ret()) #Prints unknown
print(a.ret() == a.get()) #prints false obviously, just a testimony ;)
root.mainloop()
這里必須要用到a.ret(),為什么呢?因?yàn)檫@就是我在課堂上定義它的方式。您可以使用a.get(),但它只會(huì)給您通常的空白字符串。get()而且我認(rèn)為除了編輯__init__.pytkinter 文件之外不可能覆蓋現(xiàn)有方法,如果我錯(cuò)了,請告訴我。
您還可以將類縮短為多行,例如:
class Custom(Entry):
def ret(self):
return 'Unknown' if self.get() == '' else self.get() #does the same thing as before
請記住,您可以替換'Unknown'為您喜歡的任何內(nèi)容。
這不是最好的代碼,因?yàn)槲乙郧皼]有使用過類。為什么使用類?因?yàn)槲蚁嘈拍J(rèn)的 tkinter 不可能做到這一點(diǎn)。那么為什么不直接創(chuàng)建一個(gè)自定義類并獲得這種效果;)
您應(yīng)該如何在您的項(xiàng)目中使用它?只需將所有替換Entry(..)為Custom(..). 它也支持普通小部件所做的所有選項(xiàng)Entry。
在此處進(jìn)行更改以修復(fù)錯(cuò)誤:
def click():
kilograms = a.ret()
kilo_float = a.ret()
try:
kilo_float = float(kilograms)
except ValueError:
pass
print(kilo_float)
希望這對(duì)您有幫助。如果您有任何疑問或錯(cuò)誤,請告訴我。
添加回答
舉報(bào)