0
私はTkinterには非常に慣れているので、プログラミングの授業でこれを使用しなければなりません。 SuccessfulLoginウィンドウが開きます。私はtkinterに新しいことを覚えておいてください。ありがとうございました。Tkinter - Tkinterの別のウィンドウを開いている間にウィンドウを閉じる方法 - Python 3
import tkinter
from tkinter import ttk
------------------------------------------- -------------------------------------------------- --------------------------
class loginWindow():
def __init__(self, master): #constructor
self.master = master
self.master.title("Main Menu") #window title
self.master.geometry("400x400") #window size
self.master.configure(background = "#fff1d0") #window colour, hexadecimal codes
#self.photo = PhotoImage(file = "filename.png") #sets up image
#self.photoLabel = Label(self.master, image = self.photo, bg = "red") #puts image on label
#self.photoLabel.place(x=350 y=600) #places onto the screen with specified coordinates
self.enterLabel = tkinter.Label(self.master, text = "Launcher", font = ("Helvetica", 16), bg = "#fff1d0")
self.enterLabel.pack(pady = 10)
self.emptySpace = tkinter.Label(self.master, text = " ", bg = "#fff1d0")
self.emptySpace.pack(pady = 10)
self.username = tkinter.Label(self.master, text = "Username:", bg = "#fff1d0") #Label widget and properties
self.username.pack()
self.enterUser = tkinter.ttk.Entry(self.master, width = 40) #Creates text entry widget
self.enterUser.pack()
self.password = tkinter.Label(self.master, text = "Password:", bg = "#fff1d0") #Label widget and properties
self.password.pack()
self.enterPass = tkinter.ttk.Entry(self.master, width = 40, show = "*") #Creates text entry widget
self.enterPass.pack()
self.loginButton = tkinter.ttk.Button(self.master, width = 40, text = "Login", command = self.loginAccess)
self.loginButton.pack(pady = 10)
def loginAccess(self):
username = "Aaron" #Needs to become a dictionary or database or something with all usernames and passwords
password = "Password"
global userUsername
userUsername = self.enterUser.get()
userPassword = self.enterPass.get()
if userUsername != username and userPassword != password:
self.enterLabel.configure(text = "Invalid username and password. Please try again.", font = (10))
self.enterUser.delete(0, "end")
self.enterPass.delete(0, "end")
if userUsername == username and userPassword != password:
self.enterLabel.configure(text="Invalid password. Please try again.", font = (10))
self.enterPass.delete(0, "end")
if userUsername == username and userPassword == password:
self.enterUser.delete(0, "end")
self.enterPass.delete(0, "end")
self.goToSuccessfulLoginWindow()
def goToSuccessfulLoginWindow(self):
root2 = tkinter.Toplevel()
myGUI = successfulLogin(root2)
myGUI.setName(userUsername)
----------------- -------------------------------------------------- -------------------------------------------------- -
class successfulLogin():
def __init__(self, master):
self.master = master
self.master.title("Login Successful")
self.master.geometry("700x700")
self.master.configure(background="#fff1d0")
self.confirmLabel = tkinter.Label(self.master, text = " ", font = ("Helvetica", 16), bg = "#fff1d0")
self.confirmLabel.pack()
self.quitButton = tkinter.ttk.Button(self.master, text = "Quit", command = self.quitWindow)
self.quitButton.pack()
self.logOutButton = tkinter.ttk.Button(self.master, text = "Log out", command = self.logout)
self.logOutButton.pack()
def setName(self, username):
name = username
self.confirmLabel.configure(text = "welcome " + name)
def quitWindow(self):
self.master.quit()
def logout(self):
loginWindow(root)
self.master.destroy()
----------------------------------------- -------------------------------------------------- ----------------------- -----
def centerWindow(width=300, height=200):
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width/2) - (width/2)
y = (screen_height/2) - (height/2)
root.geometry('%dx%d+%d+%d' % (width, height, x, y))
root = tkinter.Tk()
centerWindow(310, 375)
root.resizable(False,False)
loginWindow(root)
root.mainloop(
コードのインデントを修正する必要があります。また、あまりにも多くのコードを投稿しました。あなたの質問が2つの異なるウィンドウを管理する方法についてのものであるならば、おそらくあなたはあなたが持っている問題を説明するために12行か2行のコードしか必要としません。 [最小限で完全で検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)を参照してください。 –
質問には、不要なコードがたくさんあります。あなたの質問に直接リンクしているコードを教えてください。 – Goralight
また、 'if login == Trueのような単純なもので、LoginWindowとDrawNewWindowを破壊するとそのトリックを行います。うまくいけば、この疑似コードは役に立ちます(?) – Goralight