簡體   English   中英

函數在Python Tkinter中不起作用嗎?

[英]Functions are not Working in Python Tkinter?

我使用Python Tkinter編寫了程序,在其中編寫了三行10個標簽,並在它們下面創建了一個開始按鈕。 我已使用循環在“標簽”中顯示文本。

標簽的第一行僅顯示標題。

標簽標題

在Label的第二行上,我設置了以下條件:如果循環值模數等於零(a%2==0)則它將Labels文本顯示為ON,否則顯示OFF,並且此條件在Label的第三行中與下面的代碼相反。

在此處輸入圖片說明

最后,在啟動按鈕上,我調用了一個函數,該函數驗證以下過程:如果循環變量值模數2等於1,則在“標簽”的第二行上顯示“標簽”文本為“ OFF”,否則顯示為“ ON”。 此過程與“標簽”的第三行相反。 但是這里的問題是,當我單擊“開始”按鈕時,它僅更改了標簽第二行和第三行的最后一個值,但我想更改所有標簽。 我認為這些功能無法正常工作。 代碼如下。

from tkinter import *
import tkinter as tk

win = Tk()
win.title("Label")
win.geometry("800x600+50+50")
win.config(bg='white')

label1=Label(win, text="Label Status Changer", font=("Calibri",24,"bold"), bg='white', borderwidth=1, relief="solid", padx=20, pady=20) #"flat", "raised", "sunken", "ridge", "solid", and "groove"
label1.pack(pady=(15,60))


lblframe = tk.Frame(win)
for a1 in range(10):
    pre1=Label(lblframe, text=("LBL",(a1+1)), font=("Calibri",12, "bold"), bg="white", borderwidth=1, relief="solid", padx=5, pady=2)
    pre1.grid(row=0, column=a1)

for a2 in range(10):
    if ( a2%2 == 0 ):
        pre2=Label(lblframe, text="OFF", font=("Calibri",12,"bold"), bg="white", fg="Green", borderwidth=1, relief="solid", padx=11, pady=1)
        pre2.grid(row=1, column=a2, sticky="nw")
    else:
        pre2=Label(lblframe, text="ON", font=("Calibri",12,"bold"), bg="white", fg="Red", borderwidth=1, relief="solid", padx=11, pady=1)
        pre2.grid(row=1, column=a2, sticky="nw")

for a3 in range(10):
    if (a3%2 == 1):
        pre3=Label(lblframe, text="OFF", font=("Calibri",12,"bold"), bg="white", fg="Green", borderwidth=1, relief="solid", padx=11, pady=1)
        pre3.grid(row=2, column=a3, sticky="nw")
    else:
        pre3=Label(lblframe, text="ON", font=("Calibri",12,"bold"), bg="white", fg="Red", borderwidth=1, relief="solid", padx=11, pady=1)
        pre3.grid(row=2, column=a3, sticky="nw")

lblframe.pack()

def oldstatus():
    for a4 in range(10):
        if(a4%2==1):
            pre2.config(text="OFF")
        else:
            pre2.config(text="ON")

def newstatus():
    for a5 in range(10):
        if(a5%2==0):
            pre3.config(text="OFF")
        else:
            pre3.config(text="ON")

def statuschanger():
    oldstatus()
    newstatus()

#Button1
button1=Button(win,text="Start",width=10,height=2, font=("Calibri",16,"bold"), bg="black",fg="white", command=statuschanger)
button1.pack(pady=(30,0))

win.mainloop()

運行程序輸出

在此處輸入圖片說明

按下開始按鈕時輸出

在此處輸入圖片說明

我使用Python Tkinter編寫了程序,在其中編寫了三行10個標簽,並在它們下面創建了一個開始按鈕。 我已使用循環在“標簽”中顯示文本。

標簽的第一行僅顯示標題。

標簽標題

在Label的第二行上,我設置了以下條件:如果循環值模數等於零(a%2==0)則它將Labels文本顯示為ON,否則顯示OFF,並且此條件在Label的第三行中與下面的代碼相反。

在此處輸入圖片說明

最后,在啟動按鈕上,我調用了一個函數,該函數驗證以下過程:如果循環變量值模數2等於1,則在“標簽”的第二行上顯示“標簽”文本為“ OFF”,否則顯示為“ ON”。 此過程與“標簽”的第三行相反。 但是這里的問題是,當我單擊“開始”按鈕時,它僅更改了標簽第二行和第三行的最后一個值,但我想更改所有標簽。 我認為這些功能無法正常工作。 代碼如下。

from tkinter import *
import tkinter as tk

win = Tk()
win.title("Label")
win.geometry("800x600+50+50")
win.config(bg='white')

label1=Label(win, text="Label Status Changer", font=("Calibri",24,"bold"), bg='white', borderwidth=1, relief="solid", padx=20, pady=20) #"flat", "raised", "sunken", "ridge", "solid", and "groove"
label1.pack(pady=(15,60))


lblframe = tk.Frame(win)
for a1 in range(10):
    pre1=Label(lblframe, text=("LBL",(a1+1)), font=("Calibri",12, "bold"), bg="white", borderwidth=1, relief="solid", padx=5, pady=2)
    pre1.grid(row=0, column=a1)

for a2 in range(10):
    if ( a2%2 == 0 ):
        pre2=Label(lblframe, text="OFF", font=("Calibri",12,"bold"), bg="white", fg="Green", borderwidth=1, relief="solid", padx=11, pady=1)
        pre2.grid(row=1, column=a2, sticky="nw")
    else:
        pre2=Label(lblframe, text="ON", font=("Calibri",12,"bold"), bg="white", fg="Red", borderwidth=1, relief="solid", padx=11, pady=1)
        pre2.grid(row=1, column=a2, sticky="nw")

for a3 in range(10):
    if (a3%2 == 1):
        pre3=Label(lblframe, text="OFF", font=("Calibri",12,"bold"), bg="white", fg="Green", borderwidth=1, relief="solid", padx=11, pady=1)
        pre3.grid(row=2, column=a3, sticky="nw")
    else:
        pre3=Label(lblframe, text="ON", font=("Calibri",12,"bold"), bg="white", fg="Red", borderwidth=1, relief="solid", padx=11, pady=1)
        pre3.grid(row=2, column=a3, sticky="nw")

lblframe.pack()

def oldstatus():
    for a4 in range(10):
        if(a4%2==1):
            pre2.config(text="OFF")
        else:
            pre2.config(text="ON")

def newstatus():
    for a5 in range(10):
        if(a5%2==0):
            pre3.config(text="OFF")
        else:
            pre3.config(text="ON")

def statuschanger():
    oldstatus()
    newstatus()

#Button1
button1=Button(win,text="Start",width=10,height=2, font=("Calibri",16,"bold"), bg="black",fg="white", command=statuschanger)
button1.pack(pady=(30,0))

win.mainloop()

運行程序輸出

在此處輸入圖片說明

按下開始按鈕時輸出

在此處輸入圖片說明

我使用Python Tkinter編寫了程序,在其中編寫了三行10個標簽,並在它們下面創建了一個開始按鈕。 我已使用循環在“標簽”中顯示文本。

標簽的第一行僅顯示標題。

標簽標題

在Label的第二行上,我設置了以下條件:如果循環值模數等於零(a%2==0)則它將Labels文本顯示為ON,否則顯示OFF,並且此條件在Label的第三行中與下面的代碼相反。

在此處輸入圖片說明

最后,在啟動按鈕上,我調用了一個函數,該函數驗證以下過程:如果循環變量值模數2等於1,則在“標簽”的第二行上顯示“標簽”文本為“ OFF”,否則顯示為“ ON”。 此過程與“標簽”的第三行相反。 但是這里的問題是,當我單擊“開始”按鈕時,它僅更改了標簽第二行和第三行的最后一個值,但我想更改所有標簽。 我認為這些功能無法正常工作。 代碼如下。

from tkinter import *
import tkinter as tk

win = Tk()
win.title("Label")
win.geometry("800x600+50+50")
win.config(bg='white')

label1=Label(win, text="Label Status Changer", font=("Calibri",24,"bold"), bg='white', borderwidth=1, relief="solid", padx=20, pady=20) #"flat", "raised", "sunken", "ridge", "solid", and "groove"
label1.pack(pady=(15,60))


lblframe = tk.Frame(win)
for a1 in range(10):
    pre1=Label(lblframe, text=("LBL",(a1+1)), font=("Calibri",12, "bold"), bg="white", borderwidth=1, relief="solid", padx=5, pady=2)
    pre1.grid(row=0, column=a1)

for a2 in range(10):
    if ( a2%2 == 0 ):
        pre2=Label(lblframe, text="OFF", font=("Calibri",12,"bold"), bg="white", fg="Green", borderwidth=1, relief="solid", padx=11, pady=1)
        pre2.grid(row=1, column=a2, sticky="nw")
    else:
        pre2=Label(lblframe, text="ON", font=("Calibri",12,"bold"), bg="white", fg="Red", borderwidth=1, relief="solid", padx=11, pady=1)
        pre2.grid(row=1, column=a2, sticky="nw")

for a3 in range(10):
    if (a3%2 == 1):
        pre3=Label(lblframe, text="OFF", font=("Calibri",12,"bold"), bg="white", fg="Green", borderwidth=1, relief="solid", padx=11, pady=1)
        pre3.grid(row=2, column=a3, sticky="nw")
    else:
        pre3=Label(lblframe, text="ON", font=("Calibri",12,"bold"), bg="white", fg="Red", borderwidth=1, relief="solid", padx=11, pady=1)
        pre3.grid(row=2, column=a3, sticky="nw")

lblframe.pack()

def oldstatus():
    for a4 in range(10):
        if(a4%2==1):
            pre2.config(text="OFF")
        else:
            pre2.config(text="ON")

def newstatus():
    for a5 in range(10):
        if(a5%2==0):
            pre3.config(text="OFF")
        else:
            pre3.config(text="ON")

def statuschanger():
    oldstatus()
    newstatus()

#Button1
button1=Button(win,text="Start",width=10,height=2, font=("Calibri",16,"bold"), bg="black",fg="white", command=statuschanger)
button1.pack(pady=(30,0))

win.mainloop()

運行程序輸出

在此處輸入圖片說明

按下開始按鈕時輸出

在此處輸入圖片說明

暫無
暫無

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

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