如何链接另一个类的Entry小部件?

问题描述 投票:0回答:1

我正在尝试在一个班级上显示标签,并且文本是从另一个班级链接的。

我有两个类,分别命名为App()login()

[login]应用会启动,提示输入用户名和密码,并在登录时显示

接下来,App加载。

App中,如果选中其中一个复选框,则对面将被禁用。但最重要的是,我需要在未禁用复选框顶部的返回已登录的用户名

例如,在我的代码中(底部是完整代码):注意:函数内部和底部附近的if语句中的## DISABLE ON CLICK ##中有如下代码:

self.user = Label(main, text = os.getlogin()).grid(column = 2, row = 0, sticky = W)

此刻它返回windows用户登录,但是如何将其更改为应用程序内使用的用户名?

这是我尝试过的:

self.user = Label(main, text = self.entry_username.get()).grid(column = 2, row = 0, sticky = W)

尝试链接到login()类并返回用户名条目。

这里是完整代码:

from tkinter import *
from tkinter import DISABLED
import tkinter.ttk as ttk
import os
import glob
from PIL import Image, ImageTk, ImageGrab
from pathlib import Path

# from openpyxl import load_workbook
class App():
    def __init__(self,master):


        notebook = ttk.Notebook(master)
        notebook.pack(expand = 1, fill = "both")

        #Frames
        main = ttk.Frame(notebook)
        manual = ttk.Frame(notebook)

        notebook.add(main, text='Main-Screen')
        notebook.add(manual, text='Manual')



        #Check boxes
        #Assigning Integers to variables
        var1 = IntVar()
        var1a = IntVar()
        var2 = IntVar()
        var2a = IntVar()
        var3 = IntVar()
        var3a = IntVar()
        var4 = IntVar()
        var4a = IntVar()
        var5 = IntVar()
        var5a = IntVar()
        var6 = IntVar()
        var6a = IntVar()
        var7 = IntVar()
        var7a = IntVar()
        var8 = IntVar()
        var8a = IntVar()
        var9 = IntVar()
        var9a = IntVar()
        var10 = IntVar()
        var10a = IntVar()
        var11 = IntVar()
        var11a = IntVar()
        var12 = IntVar()
        var12a = IntVar()

        #Text boxes for initials

        #Displaying checkboxes and assigning to variables
        self.Checkbox1 = Checkbutton(main, text="Ingredients present in full (any allergens in bold with allergen warning if necessary)", variable=var1)
        self.Checkbox1.grid(column = 2, row = 1, sticky = W)
        self.Checkbox2 = Checkbutton(main, variable = var1a)
        self.Checkbox2.grid(column = 1, row = 1, sticky = W)

        self.Checkbox3 = Checkbutton(main, text="May Contain Statement.", variable=var2)
        self.Checkbox3.grid(column = 2, row = 2, sticky = W)
        self.Checkbox4 = Checkbutton(main, variable = var2a)
        self.Checkbox4.grid(column = 1, row = 2, sticky = W)

        self.Checkbox5 = Checkbutton(main, text="Cocoa Content (%).", variable=var3)
        self.Checkbox5.grid(column = 2, row = 3, sticky = W)
        self.Checkbox6 = Checkbutton(main, variable = var3a)
        self.Checkbox6.grid(column = 1, row = 3, sticky = W)

        self.Checkbox7 = Checkbutton(main, text="Vegetable fat in addition to Cocoa butter", variable=var4)
        self.Checkbox7.grid(column = 2, row = 4, sticky = W)
        self.Checkbox8 = Checkbutton(main, variable = var4a)
        self.Checkbox8.grid(column = 1, row = 4, sticky = W)

        self.Checkbox9 = Checkbutton(main, text="Instructions for Use.", variable=var5)
        self.Checkbox9.grid(column = 2, row = 5, sticky = W)
        self.Checkbox10 = Checkbutton(main, variable = var5a)
        self.Checkbox10.grid(column = 1, row = 5, sticky = W)

        self.Checkbox11 = Checkbutton(main, text="Additional warning statements (pitt/stone, hyperactivity etc)", variable=var6)
        self.Checkbox11.grid(column = 2, row = 6, sticky = W)
        self.Checkbox12 = Checkbutton(main, variable = var6a)
        self.Checkbox12.grid(column = 1, row = 6, sticky = W)

        self.Checkbox13 = Checkbutton(main, text="Nutritional Information Visible", variable=var7)
        self.Checkbox13.grid(column = 2, row = 7, sticky = W)
        self.Checkbox14 = Checkbutton(main, variable = var7a)
        self.Checkbox14.grid(column = 1, row = 7, sticky = W)

        self.Checkbox15 = Checkbutton(main, text="Storage Conditions", variable=var8)
        self.Checkbox15.grid(column = 2, row = 8, sticky = W)
        self.Checkbox16 = Checkbutton(main, variable = var8a)
        self.Checkbox16.grid(column = 1, row = 8, sticky = W)

        self.Checkbox17 = Checkbutton(main, text="Best Before & Batch Information", variable=var9)
        self.Checkbox17.grid(column = 2, row = 9, sticky = W)
        self.Checkbox18 = Checkbutton(main, variable = var9a)
        self.Checkbox18.grid(column = 1, row = 9, sticky = W)

        self.Checkbox19 = Checkbutton(main, text="Net Weight & Correct Font Size.", variable=var10)
        self.Checkbox19.grid(column = 2, row = 10, sticky = W)
        self.Checkbox20 = Checkbutton(main, variable = var10a)
        self.Checkbox20.grid(column = 1, row = 10, sticky = W)

        self.Checkbox21 = Checkbutton(main, text="Barcode - Inner", variable=var11)
        self.Checkbox21.grid(column = 2, row = 11, sticky = W)
        self.Checkbox22 = Checkbutton(main, variable = var11a)
        self.Checkbox22.grid(column = 1, row = 11, sticky = W)

        self.Checkbox23 = Checkbutton(main, text="Address & contact details correct", variable=var12)
        self.Checkbox23.grid(column = 2, row = 12, sticky = W)
        self.Checkbox24 = Checkbutton(main, variable = var12a)
        self.Checkbox24.grid(column = 1, row = 12, sticky = W)


        ##DISABLE ON CLICK##
        def showstate(*args):
            if var1.get() or var2.get() or var3.get() or var4.get() or var5.get() or var6.get() or var7.get() or var8.get() or var9.get() or var10.get() or var11.get() or var12.get():
                self.Checkbox2.config(state = DISABLED)
                self.Checkbox4.config(state = DISABLED)
                self.Checkbox6.config(state = DISABLED)
                self.Checkbox8.config(state = DISABLED)
                self.Checkbox10.config(state = DISABLED)
                self.Checkbox12.config(state = DISABLED)
                self.Checkbox14.config(state = DISABLED)
                self.Checkbox16.config(state = DISABLED)
                self.Checkbox18.config(state = DISABLED)
                self.Checkbox20.config(state = DISABLED)
                self.Checkbox22.config(state = DISABLED)
                self.Checkbox24.config(state = DISABLED)
                self.user = Label(main, text = os.getlogin()).grid(column = 2, row = 0, sticky = W)
            if var1a.get() or var2a.get() or var3a.get() or var4a.get() or var5a.get() or var6a.get() or var7a.get() or var8a.get() or var9a.get() or var10a.get() or var11a.get() or var12a.get():
                self.Checkbox1.config(state = DISABLED)
                self.Checkbox3.config(state = DISABLED)
                self.Checkbox5.config(state = DISABLED)
                self.Checkbox7.config(state = DISABLED)
                self.Checkbox9.config(state = DISABLED)
                self.Checkbox11.config(state = DISABLED)
                self.Checkbox13.config(state = DISABLED)
                self.Checkbox15.config(state = DISABLED)
                self.Checkbox17.config(state = DISABLED)
                self.Checkbox19.config(state = DISABLED)
                self.Checkbox21.config(state = DISABLED)
                self.Checkbox23.config(state = DISABLED)
                self.user = Label(main, text = os.getlogin()).grid(column = 1, row = 0, sticky = W)

        var1.trace_variable("w", showstate)
        var1a.trace_variable("w", showstate)
        var2.trace_variable("w", showstate)
        var2a.trace_variable("w", showstate)
        var3.trace_variable("w", showstate)
        var3a.trace_variable("w", showstate)
        var4.trace_variable("w", showstate)
        var4a.trace_variable("w", showstate)
        var5.trace_variable("w", showstate)
        var5a.trace_variable("w", showstate)
        var6.trace_variable("w", showstate)
        var6a.trace_variable("w", showstate)
        var7.trace_variable("w", showstate)
        var7a.trace_variable("w", showstate)
        var8.trace_variable("w", showstate)
        var8a.trace_variable("w", showstate)
        var9.trace_variable("w", showstate)
        var9a.trace_variable("w", showstate)
        var10.trace_variable("w", showstate)
        var10a.trace_variable("w", showstate)
        var11.trace_variable("w", showstate)
        var11a.trace_variable("w", showstate)
        var12.trace_variable("w", showstate)
        var12a.trace_variable("w", showstate)

        ##DISABLE ON CLICK##


        #Send data
        def var_states():
            text_file = open("logfile.txt", "a")
            text_file.write("USER: %s, One %d\n" % (os.getlogin(), var1.get()))
            text_file.close()

        self.dataSend = Button(main, text = "Send", command = var_states).grid(column = 1, row = 13, sticky = W)

###################################################################################################################################
                                                        ##Load Image##
###################################################################################################################################

        # Create a Tkinter variable
        tkvar = StringVar(root)


        # Directory
        directory = "//SERVER/shared_data/Technical/Label Sign Off Sheets/sign off project"
        choices = glob.glob(os.path.join(directory, "*- to sign.jpg"))
        tkvar.set('...To Sign Off...') # set the default option

        # Images
        def change_dropdown():
            imgpath = tkvar.get()
            img = Image.open(imgpath)
            img = img.resize((529,361))
            photo = ImageTk.PhotoImage(img)
            label2.image = photo
            label2.configure(image=photo)

        #return path value
        p = None

        def func(value):
            global p
            p = Path(value)
            print('req:', p)

        #widgets
        self.msg1 = Label(main, text = "Choose here")
        self.msg1.grid(column = 0, row = 0)

        self.popupMenu = OptionMenu(main, tkvar, *choices)
        self.popupMenu.grid(row=1, column=0)

        self.display_label = label2 = Label(main, image=None)
        self.display_label.grid(row=2, column=0, rowspan = 500)

        self.open_button = Button(main, text="Open", command=change_dropdown)
        self.open_button.grid(row=502, column=0)



###################################################################################################################################
                                                        ##Tab 2 - Manual##
###################################################################################################################################

        def open_doc():
            os.system("start C:/Users/Eduards/Desktop/Portfolio")

        self.Manual_Button = Button(manual, text = "Open Manual", command = open_doc)
        self.Manual_Button.pack()





###################################################################################################################################
                                                        ##USERS##
###################################################################################################################################
class login(Frame):
    def __init__(self, master):
        super().__init__(master)

        self.label_username = Label(self, text="Username")
        self.label_password = Label(self, text="Password")

        self.entry_username = Entry(self)
        self.entry_password = Entry(self, show="*")

        self.label_username.grid(row=0, sticky=E)
        self.label_password.grid(row=1, sticky=E)
        self.entry_username.grid(row=0, column=1)
        self.entry_password.grid(row=1, column=1)

        self.logbtn = Button(self, text="Login", command=self._login_btn_clicked)
        self.logbtn.grid(columnspan=2)

        self.pack()

    def _login_btn_clicked(self):
        # print("Clicked")
        username = self.entry_username.get()
        password = self.entry_password.get()

        # print(username, password)

        if username == "ed" and password == "1":
            self.label_username.grid_forget()
            self.label_password.grid_forget()
            self.entry_username.grid_forget()
            self.entry_password.grid_forget()
            self.logbtn.grid_forget()
            self.pack_forget()
            app = App(root)
        if username == "NB" and password == "2":
            self.label_username.grid_forget()
            self.label_password.grid_forget()
            self.entry_username.grid_forget()
            self.entry_password.grid_forget()
            self.logbtn.grid_forget()
            self.pack_forget()
            app = App(root)


        else:
            print("error")



root = Tk()
root.minsize(950, 450)
root.title("SIGN OFF LABELS")

lf = login(root)
# app = App(root)
root.mainloop()
python tkinter passwords username
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.