【问题标题】:Blank Tk window showing with no attributes显示没有属性的空白 Tk 窗口
【发布时间】:2020-04-18 18:04:30
【问题描述】:

到目前为止,我的代码非常基本,所以当我第一次运行它时,它运行得非常好,但是,一旦我为每个按钮命令添加了两个函数,而不是显示标题和小部件,什么都没有显示,而是只是一个标题为“Tk”的空白屏幕。之前它工作正常,当我尝试删除这些功能时,它仍然有同样的问题。

import sqlite3
import sys
import os
from random import randint
from tkinter import *
from tkinter import messagebox as ms
from tkinter import ttk
import uuid
screen = Tk()

class Main:

    def __init__(self, screen):
        self._frame = None
        self.loginscreen = StringVar()
        self.username = StringVar()
        self.password = StringVar()
        self.var_FName = StringVar()
        self.var_SName = StringVar()
        self.var_password1 = StringVar()
        self.var_usertype = StringVar()
        self.UserID = StringVar()

    def Mainmenu(self):
        screen.geometry("300x250")
        screen.title("Manager of stuff")
        Label(screen, text = "Login Menu", bg = "light blue", width = "300", font = ('',35),pady = 10).pack()
        Label(text = "").pack()
        Button(text = "Login", height = "2", width = "30", command = self.login).pack()
        Label(text = "").pack()
        Button(text = "Register",height = "2", width = "30", command = self.register).pack()

    def login(self):

        login = Toplevel(screen)
        login.title("Login")
        login.geometry("500x450")

        Label(login, text = "Please enter your username and password below: ").pack()
        Label(login, text = "").pack()
        Label(login, text = "Username: ").pack()
        Entry(login, textvariable = username).pack()
        Label(login, text = "").pack()
        Label(login, text = "Password: ").pack()
        Entry(login, textvariable = password, show= "*").pack()
        Label(login, text = "").pack()
        Button(login, text = "Login As a Teacher", width = 20, height = 3, command = self.TeachLoginFunc).pack()
        Label(login, text = "").pack()
        Button(login, text = "Login As a Student", width = 20, height = 3, command = self.Main.StudLoginFunc).pack()
        Label(login, text = "").pack()
        Button(login, text = "Back", width = 30, height = 4, command = self.logindestroy).pack()
        login.mainloop()

    def register(self):

        regscreen = Toplevel(screen)
        regscreen.title("Registration")
        regscreen.geometry("500x500")

        Label(regscreen, text = "Please enter your username and password below: ").pack()
        Label(regscreen, text = "").pack()
        Label(regscreen, text = "Firstname: ").pack()
        Entry(regscreen, textvariable = var_FName).pack()
        Label(regscreen, text = "").pack()
        Label(regscreen, text = "Surname: ").pack()
        Entry(regscreen, textvariable = var_SName).pack()
        Label(regscreen, text = "").pack()
        Label(regscreen, text = "Password: ").pack()
        Entry(regscreen, textvariable = var_password1).pack()
        Label(regscreen, text = "").pack()
        Button(regscreen, text = "Teacher", width = 10, height = 1, command = self.teachregfunc).pack()
        Label(regscreen, text = "").pack()
        Button(regscreen, text = "Student", width = 10, height = 1, command = self.studregfunc).pack()
        Label(regscreen, text = "").pack()
        Button(regscreen, text = "Back", width = 30, height = 4, command = self.regscreendestroy).pack()
        regscreen.mainloop()    

Main(screen)

screen.mainloop()

只是我的 tkinter 以某种方式坏了还是什么,或者代码在什么地方坏了?

【问题讨论】:

  • 至少有一个问题是多次调用mainloop。您需要准确调用一次。

标签: python oop tkinter


【解决方案1】:

你还没有告诉 python 你想运行什么函数。

尝试:

Main(screen).Mainmenu()

代替:

Main(screen)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多