使用ttk笔记本的标签标题作为自定义步骤指示符

时间:2020-08-26 06:38:45

标签: python tkinter ttk

我想更改标签标题作为步骤指示符。当前输出是根据第一个屏幕截图。现在,我想要一个选项卡被完全填充时,将其更改为绿色。如果其他标签未满,则其标题将变为黄色;如果其他标签未满,则其标题应为绿色。表示不同的颜色指示器作为选项卡标题。也应该是实时的。

def page2(n,zonenum):
    Qlist=StringVar()
    lst=tkWindow.grid_slaves()
    for l in lst:
      l.destroy()
    def page1():
        pass
    def page3temp():
        
        if pplnum0.get()=='':
            messagebox.showwarning('Required','Fill Number of Peoples')
        elif areanum0=='':
            messagebox.showwarning('Required','Fill Area of Zone')
        elif damarea0.get()=='':
            messagebox.showwarning('Required','Fill Percentage of Damaged Area')
        elif int(damarea0.get())>100:
            messagebox.showwarning('Required','Maximum Damaged Percentage Cannot Be more than 100%')
        elif existname0.get()=='':
            messagebox.showwarning('Required','Fill Existing Number of Projects')
        else:
            page3(n,zonenum)
    def clr():
        pass
    def morequarter():
        popup=Toplevel()
        global listro
        listro=0
        def adquarter():
            global listro
            global lbllst
            qna=qname1.get()
            lbllst.insert(listro,qna)
            lbllst.see(listro)
            lbllst.count+=1
            listro +=1
            qname1.set('')
        def Remove():
            global lbllst
            item=lbllst.curselection()
            lbllst.delete(item[0])
            lbllst.count-=1
        def Edit():
            global lbllst
            item=lbllst.get(lbllst.curselection())
            qname1.set(item)
        def apply():
            popup.destroy()

        q1Label = Label(popup,text="Quarter Names",font=('arial',10,'bold')).grid(row=0, column=0,padx=10,pady=5,sticky='w')
        qEntry=Entry(popup,font=('arial',10,'bold'),textvariable=qname1).grid(row=0,column=1,padx=10,pady=5,sticky=E)
        adq=Button(popup,text='Add Quarter',width=15,command=adquarter).grid(row=0,column=2,padx=10)
        edq=Button(popup,text='Edit Quarter',width=15,command=Edit).grid(row=1,column=2,padx=10)
        delq=Button(popup,text='Delete Quarter',width=15,command=lambda *args: Remove()).grid(row=2,column=2,padx=10)
        global lbllst
        lbllst=Listbox(popup,height=10,listvariable=Qlist)
        lbllst.count=0
        for i in range(lbllst.cget('height')-1):
            lbllst.insert(END,'')
        lbllst.grid(row=1,column=0,padx=5)
        
        okBut=Button(popup,text='Apply',command=apply).grid(row=6,column=1,sticky='e',pady=10)
        canBut=Button(popup,text='Cancel').grid(row=6,column=1,sticky='w',pady=10)

    
    style = ttk.Style()
    
##    img=ImageTk.PhotoImage(Image.open('error.png'))
    
    global tabControl
    tabControl = ttk.Notebook(tkWindow)
    for i in range(zonenum):
        globals()['qname'+str(i)] = StringVar()
        globals()['pplnum'+str(i)] = StringVar()
        globals()['areanum'+str(i)] = StringVar()
        globals()['damarea'+str(i)] = StringVar()
        globals()['existname'+str(i)] = StringVar()
    def autoupdatehead():
        global fgcol
        global img
        if Qlist.get()=='' and globals()['pplnum'+str(i)].get()=='' and  areanum0.get()=='' and damarea0.get()=='' and existname0.get()=='':
            fgcol='red'
            img=PhotoImage(file='error.png')
        elif Qlist.get()!='' and pplnum0.get()!='' and  areanum0.get()!='' and damarea0.get()!='' and existname0.get()!='':
            print('complete filled')
            fgcol='green'
            img=PhotoImage(file='success.png')
        else:
            print('something filled')
            fgcol='yellow'
            img=PhotoImage(file='ready.png')
        style.configure("TNotebook.Tab",foreground=fgcol)
        tabControl.after(500,autoupdatehead)
        
    autoupdatehead()
    style.theme_create("custom_tabs", parent="alt", settings={
        "TNotebook.Tab": {
            "configure": {"padding": [10, 10, 0, 0],'margin':10,'font':('arial',14,'bold'),'foreground':fgcol}
            }})
    style.theme_use("custom_tabs")
    tabs=[]
    for i in range(zonenum):
        tab=ttk.Frame(tabControl)
        tabs.append(tab)
        tabControl.add(tabs[i],text='ZONE '+str(i+1),image=img,compound=BOTTOM)
        tabControl.image=img
        lblfrm = LabelFrame(tabs[i],height=400, width=400,bd=4,bg='#1e2842',font=('Dubai',12,'bold'),fg='#f7dabc',text="Enter Data for Zone Number ")
        lblfrm.grid(row=1,column=1,padx=40,pady=20)
        q1Label = Label(lblfrm,text="Quarter Names",font=('arial',10,'bold'),bg='#082543',fg='#f7dabc').grid(row=0, column=0,padx=10,pady=5,sticky='w')

        

        moreqButton=Button(lblfrm,text="Add Quarters",command=morequarter)
        moreqButton.grid(row=0,column=2)
        
        pplLabel = Label(lblfrm,text="Total Number of People",font=('arial',10,'bold'),bg='#082543',fg='#f7dabc').grid(row=1, column=0,padx=10,pady=5,sticky='w')
        pplnumEntry = Entry(lblfrm, textvariable=globals()["pplnum"+str(i)],width=40,bd=4).grid(row=1,columnspan=2, column=1,padx=10,pady=5)

        areaLabel = Label(lblfrm,text="Area of Zone (km2)",font=('arial',10,'bold'),bg='#082543',fg='#f7dabc').grid(row=2, column=0,padx=10,pady=5,sticky='w')
        areanumEntry = Entry(lblfrm, textvariable=globals()['areanum'+str(i)],width=40,bd=4).grid(row=2,columnspan=2, column=1,padx=10,pady=5)

        damLabel = Label(lblfrm,text="Damaged Area Percentage",font=('arial',10,'bold'),bg='#082543',fg='#f7dabc').grid(row=3, column=0,padx=10,pady=5,sticky='w')
        damareaEntry = Entry(lblfrm, textvariable=globals()['damarea'+str(i)],width=40,bd=4).grid(row=3,columnspan=2, column=1,padx=10,pady=5)

        existLabel = Label(lblfrm,text="Existing of service and\nadministrative centers",font=('arial',10,'bold'),bg='#082543',fg='#f7dabc').grid(row=4, column=0,padx=10,pady=5,sticky='w')
        existnameEntry = Entry(lblfrm, textvariable=globals()['existname'+str(i)],width=40,bd=4).grid(row=4,columnspan=2, column=1,padx=10,pady=5)

        loginButton = Button(lblfrm, font=('arial',10,'bold'),text="Previous",width=6,command=page1).grid(row=5,ipadx=5, column=0,pady=10,padx=10)
        loginButton = Button(lblfrm, font=('arial',10,'bold'),text="Clear",width=6,command=clr).grid(row=5,ipadx=5, column=1,pady=10,padx=5,sticky='e')
        clrButton = Button(lblfrm, font=('arial',10,'bold'),text="Next",width=6,command=page3temp).grid(row=5, ipadx=5, column=2,pady=10,padx=10)
    
        
    tabControl.pack()


if __name__=='__main__':
    tkWindow = Tk()
    width = 553
    height = 343
    screen_width = tkWindow.winfo_screenwidth()
    screen_height = tkWindow.winfo_screenheight()
    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    tkWindow.geometry("%dx%d+%d+%d" % (screen_width, screen_height, 0, 0))
    tkWindow.resizable(0, 0)
    tkWindow.title('Reconstruction of Liberated Iraqi Areas')
    load = Image.open("bgnd_new.jpg")
    render = ImageTk.PhotoImage(load)
    img = Label(tkWindow, image=render)
    img.image = render
    tkWindow.iconbitmap('icon.ico')
    img.place(x=0, y=0)
    zonenum=3
    n='Baghdad'
    page2(n,zonenum)
    tkWindow.mainloop()

screenshot

0 个答案:

没有答案