簡體   English   中英

基於get()方法的Tkinter問卷

[英]Tkinter questionnaire based on get() method

我正在嘗試根據2個問題的答案制作第一個GUI腳本。 我將展示非GUI腳本的示例

while True:
    ammount = input("What is your debt")
    if ammount.isdigit() == True:
        break
    else:
        print("Please try typing in a number")

while True:
    month = input("In which month did the debt originate?")
    if month not in ["January", "February"]:
        print("Try again")
    else:
        break

該腳本的要點是,它可以擴展所有問題,我想在Tkinter中以相同的方式理解它。 我將展示我嘗試過的內容:

from tkinter import *

def click():
        while True:
                entered_text = text_entry.get()
                if entered_text .isdigit() == False:
                        error = Label(window, text="Try again", bg = "black", fg="red", font="none 11").grid(row = 3, column = 2, sticky= W).pack()
                else:
                        break
        return True


window = Tk()

window.title("Tax calculator")
window.configure(background="black")


monto = Label(window, text="¿What is your debt?", bg="black", fg="white", font="none 12 bold")
monto.grid(row = 1, column = 0, sticky= W)

text_entry = Entry(window, width = 20, bg="white")
text_entry.grid(row = 2, column=2, sticky=W)

output = Button(window, text = "Enter", width = 6, command = click)
output.grid(row = 3, column = 0,  sticky = W)

問題是,我無法在click()方法的if / else中添加Label()方法,因為一旦滿足條件,我想問一個新問題。 一旦滿足條件,我也無法從單擊中獲得True ,因為輸入來自Button()方法。 提前致謝

實際上,您實際上不需要任何循環,一個簡單的if語句就足以解決問題。 另外,不需要每次都重新創建標簽,您只需configure()它的文本即可。 並且,請注意,索引從0開始-因此,在網格中,實際的第一行(和列)需要編號為0,而不是1。此外,我建議您擺脫import * ,因為您不知道什么導入的名稱。 它可以替換您先前導入的名稱,並且很難查看程序中的名稱。 您可能還想閱讀PEP8關於關鍵字參數周圍空格的內容

import tkinter as tk

def click():
    entered_text = text_entry.get()

    if not entered_text.isdigit():
        status_label.configure(text='Please try again')
        text_entry.delete(0, tk.END)
    else:
        status_label.configure(text='Your tax is ' + entered_text)
        text_entry.delete(0, tk.END)

root = tk.Tk()
root.title('Tax calculator')
root.configure(background='black')

monto = tk.Label(root, text='¿What is your debt?', bg='black', fg='white', font='none 12 bold')
monto.grid(row=0, column=0, padx=10, pady=(10,0))

text_entry = tk.Entry(root, width=20, bg='white')
text_entry.grid(row=1, column=0, pady=(10,0))

status_label = tk.Label(root, text='', bg='black', fg='red', font='none 11')
status_label.grid(row=2, column=0)

button = tk.Button(root, text='Enter', width=17, command=click)
button.grid(row=3, column=0, pady=(0,7))

root.mainloop()

我忘了提一下,如果您的應用程序變大,使用類可能會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM