Apr-23-2019, 09:27 PM
(Apr-23-2019, 09:18 PM)Yoriz Wrote: I'm not great with tkinter but i think your code should be more along the lines of the following. I don't totally understand tkinterstk.TK()
, in WxPython you create awx.App()
but they don't quite seem to be the same thing, so i may have some of the root stuff mixed up, someone who knows tkinter may be able to tidy that up, but it works.import tkinter as tk class NextVersionFrame(tk.Frame): def __init__(self, root): super().__init__(root) self.root = root # def next_version(): # Utilizador.set('') # bot.set('') # import tkinter as tk self.failures = 0 self.failure_max = 3 self.passwords = [('alfa', 'nenebot'), ('alfa1', 'nenebot1'), ('alfa2', 'nenebot2'), ('alfa3', 'nenebot3'), ('alfa4', 'nenebot4'), ('alfa5', 'nenebot5')] root_height = 160 root_width = 300 self.root.title('Login Obrigat�rio') screen_width = self.root.winfo_screenwidth() screen_height = self.root.winfo_screenheight() x_cordinate = int((screen_width/2) - (root_width/2)) y_cordinate = int((screen_height/2) - (root_height/2)) self.root.geometry("{}x{}+{}+{}".format( root_width, root_height, x_cordinate, y_cordinate)) self.user = self.make_entry("Utilizador:", 16, show='') self.password = self.make_entry("Password:", 16, show="*") b = tk.Button( self, borderwidth=4, text="Login", width=10, pady=8, command=self.check_password) b.pack(side=tk.BOTTOM) self.password.bind('<Return>', self.enter) self.user.focus_set() self.root.resizable(False,False) self.pack() def make_entry(self, caption, width=None, **options): tk.Label(self, text=caption).pack(side=tk.TOP) entry = tk.Entry(self, **options) if width: entry.config(width=width) entry.pack(side=tk.TOP, padx=10, fill=tk.BOTH) return entry def enter(self, event): self.check_password() def check_password(self): """ Collect 1's for every failure and quit program in case of failure_max failures """ if (self.user.get(), self.password.get()) in self.passwords: self.user = self.user.get() NewWinFrame(self) self.failures += 1 if self.failures == self.failure_max: self.destroy() raise SystemExit('Acesso Recusado') else: root.title('Tente novamente.') class NewWinFrame(tk.Toplevel): def __init__(self, parent): super(NewWinFrame, self).__init__(parent) # def new_winF(): # from tkinter import * # root = Tk() root_height = 202 root_width = 456 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() x_cordinate = int((screen_width/2) - (root_width/2)) y_cordinate = int((screen_height/2) - (root_height/2)) self.geometry("{}x{}+{}+{}".format(root_width, root_height, x_cordinate, y_cordinate)) var = tk.StringVar() label = tk.Label( self, textvariable=var, relief=tk.RAISED ) var.set(""" NeneBot v1.1 Beta --------------------------------------------------------------------------------------------- 1� repara��o de todos os bugs reportados ********************************************************************************************* 2� melhorias na estrutura da App ********************************************************************************************* 3� melhoria na App em termos de facilidade de leitura ********************************************************************************************* 4� adi��o de calculadora de IP ********************************************************************************************* 5� organizador de ficheiros (um clique e todos os ficheiros em pasta) ********************************************************************************************* 6� adi��o de outras funcionalidades mediante sugest�es reportadas""") label.pack() self.resizable(False,False) if __name__ == '__main__': root = tk.Tk() next_version_frame = NextVersionFrame(root) root.mainloop()
Much appreciated, i will try and test it right away.