【问题标题】:Nothing coming up in a GUI (Tkinter) windowGUI(Tkinter)窗口中没有任何内容
【发布时间】:2017-10-15 18:44:06
【问题描述】:

我正在使用 tkinter 为登录系统编写代码,由于某种原因,当我运行代码时没有错误消息并且弹出一个窗口但没有我需要的标题、按钮或标签。

from tkinter import *
import tkinter.messagebox

frame = Tk()

def adminlogincheck(self, master):
    frame = Frame(master)
    frame.pack()
    if username == '123key' and password == 'key123':
      accept = Label(frame, text='Login Successful')
    else:
      decline = Label(frame, text='Login incorrect')
    mainloop()

def adminselect(self, master):
  frame = Frame(master)
  frame.pack()
  self.button = Button(frame, text="Cancel", fg="red", command=quit)
  self.button.pack(side=LEFT)
  self.slogan = Button(frame, text="Proceed", command=self.adminlogin)
  self.slogan.pack(side=LEFT)
  mainloop()

def adminlogin(self, master):
  frame = Frame(master)
  frame.pack()
  username_entry = Entry(frame)
  password_entry = Entrey(frame)
  confirm = Button(frame, text='Login', command = adminlogincheck)
  loginquit = Button(frame, text='Cancel', command=quit)
  mainloop()

登录系统工作后我会添加更多,但有谁知道为什么没有按钮或标签出现?

【问题讨论】:

  • 每个脚本应该只有一个主循环。由于 mainloop 是阻止脚本继续阅读的阻塞调用。删除所有主循环并在脚本末尾添加一个
  • 并且每个小部件(标签、条目、框架等)都必须打包才能显示。第一个和最后一个函数具有未打包的条目、标签和按钮。
  • @RonNorris 我已经把包放在不同的地方,但同样的问题发生了。有没有特别需要的地方。
  • @abccd 我试过了,同样的问题发生了

标签: python user-interface button tkinter labels


【解决方案1】:

您的请求中有足够的内容来查看您要完成的工作,但代码存在许多问题。这是您似乎正在努力的工作模型...

from tkinter import *
import tkinter.messagebox


class Admin:

    def __init__(self, master):
        self.frame = Frame(master)
        self.frame.pack()
        self.username = StringVar()
        self.password = StringVar()

    def logincheck(self):
        self.clearframe()
        if self.username.get() == '123key' and self.password.get() == 'key123':
            accept = Label(self.frame, text='Login Successful')
            accept.pack(side=LEFT)
        else:
            decline = Label(self.frame, text='Login incorrect')
            decline.pack(side=LEFT)

    def select(self):
        self.clearframe()
        self.button = Button(self.frame, text="Cancel", fg="red", command=quit)
        self.button.pack(side=LEFT)
        self.slogan = Button(self.frame, text="Proceed", command=self.adminlogin)
        self.slogan.pack(side=LEFT)

    def login(self):
        self.clearframe()
        username_entry = Entry(self.frame, textvariable=self.username)
        username_entry.pack()
        password_entry = Entry(self.frame, textvariable=self.password)
        password_entry.pack()
        confirm = Button(self.frame, text='Login', command = self.logincheck)
        confirm.pack()
        loginquit = Button(self.frame, text='Cancel', command=quit)
        loginquit.pack()

    def clearframe(self):
        # Destroy all children of the class's frame.
        for child in self.frame.winfo_children():
            child.destroy()

root = Tk()
admin = Admin(root)
admin.login()
mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2014-10-28
    • 1970-01-01
    相关资源
    最近更新 更多