簡體   English   中英

Python Tkinter——對象沒有屬性“tk”

[英]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.

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