我正在尝试在一个班级上显示标签,并且文本是从另一个班级链接的。
我有两个类,分别命名为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()