iT邦幫忙

2

Python Tkinter Entry 不輸入直接空值送出 讓他判斷你沒有輸入任何東西跳出提示

各位前輩好 小弟正在練習寫一個記錄生活英文單字及中文的小程式遇到一個問題

def but():

    with open ("英文單字.txt",'a' , encoding='utf-8') as engtext:
        
        eng = var.get()
        chi = varchi.get()
        engtext.write("\n"+eng+" "+chi)
        print(eng,chi)
        tk.Label(root,text='已送出!',bg='skyblue',font='80',width=8,height=2).place(x=200,y=250)

        if eng and chi == "":
            messagebox.showinfo("錯誤!","填寫不完全!")
            print("Error")

https://ithelp.ithome.com.tw/upload/images/20210307/20126577bN9KQC349j.jpg

當我不輸入Enrty直接提交的話 正常來講我這條要發揮作用 但卻沒觸發

if eng and chi == "":
            messagebox.showinfo("錯誤!","填寫不完全!")
            print("Error")

下列方式也有嘗試過
if eng and chi == False:
if eng and chi == None:
請問各位前輩該如何修改呢?

2 個回答

1
tryit163281
iT邦新手 5 級 ‧ 2021-03-07 12:01:35
最佳解答

請先理解
if eng and chi ==" ":
這樣寫的意思為何?
and的左右兩邊必須接合判斷式的結果,
也就是說,當你寫 eng and chi == " "的時候,
他意思會轉變成 False(因eng為None沒存入東西) and True(因chi確實為空白與" "相同)導致最後不會觸發此判斷式。

echochio iT邦高手 1 級 ‧ 2021-03-08 07:19:42 檢舉

哇好像沒有電腦語言可寫成
if a and b == "" 這樣的.....

python可以這樣寫,但大部分人不會這樣用。

3
海綿寶寶
iT邦大神 1 級 ‧ 2021-03-07 11:02:09

改成這樣試試看

if (eng == "") or (chi == ""):

可以了 感謝大神
方便請問是什麼原因嗎?

我要發表回答

立即登入回答