[英]Python Tkinter -- object has no attribute 'tk'
我正在使用 tkinter 創建一個 gui,我需要使用登錄窗口和后續窗口,我無法在新窗口上放置任何標簽,因為它說“testclass”對象沒有屬性“tk”
我的主要目標是在登錄並隱藏登錄窗口后創建一個新窗口,然后使用新窗口和放置標簽並創建一個表單
from tkinter import *
import tkinter.messagebox as tm
class LoginFrame(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 verifycred(self,username,password):
def _login_btn_clicked(self):
username = self.entry_username.get()
password = self.entry_password.get()
# verify_out = self.verifycred(username,password)
self.newWindow = Toplevel(self.master)
self.app = randomclass(self.newWindow)
class randomclass(LoginFrame):
def __init__(self,master):
self.master = master
self.master.title("Random Class")
self.master.geometry("1350x750+250+150")
self.master.config(bg ='cadet blue')
self.frame = Frame(self.master, bg = 'powder blue')
self.frame.pack()
self.test = Button(self.frame,text='Random',width = 25, command = self.random)
self.test.grid(row=4,column=0)
def random(self):
self.newWindow = Toplevel(self.master)
self.app = testclass(self.newWindow)
class testclass(LoginFrame):
def __init__(self,master):
self.master = master
self.master.title("Test")
self.master.geometry("1350x750+250+150")
self.master.config(bg ='cadet blue')
self.frame = Frame(self.master, bg = 'powder blue')
self.frame.pack()
self.welcome = Label(self,text='Hello')
self.welcome.grid(row=0,column=1)
root = Tk()
lf = LoginFrame(root)
root.mainloop()
唯一的小問題是您忘記在 testclass 的標簽小部件聲明中編寫 self.master。
這是解決方案,
class testclass(LoginFrame):
def __init__(self,master):
self.master = master
self.master.title("Test")
self.master.geometry("1350x750+250+150")
self.master.config(bg ='cadet blue')
self.frame = Frame(self.master, bg = 'powder blue')
self.frame.grid(row = 0,column = 0)
self.welcome = Label(self.master,text='Hello')
self.welcome.grid(row=0,column=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.