Загрузка данных из файла и использование их в tkinter

  import picklefrom tkinter import * import tkinter.messagebox Menu = Tk () Menu.resizable (width = False, height = False) Menu.state ('zoomed') Menu.title ("Gold  Farm ") Пример = {" Test ":" Initial "} def database (): с open (" accounts.pickle "," rb ") как f: return pickle.load (f) accounts = database () usernameL = Label  (text = "Имя пользователя:") usernameL.place (y = 300, x = 550) usernameB = Entry () usernameB.place (y = 300, x = 620) passwordL = Label (text = "Password:") passwordL.  place (y = 330, x = 550) passwordB = Entry (show = "*") passwordB.place (y = 330, x = 620) eUsername = usernameB.get () ePassword = passwordB.get () def confirm ()  : для элемента в учетных записях: если eUsername в учетных записях и учетных записях [eUsername] == ePassword: print ("Correct") else: print ("False") Login = Button (text = "Login", command = confirm) Login.place  (y = 350, x = 620)  

Это мой код, который выполняет следующее:

  • Запрашивает у пользователя имя пользователя и пароль в окне tkinter
  • Устанавливает все, что они ввели как eUsername и ePassword
  • Проверяет, правильно ли они получили пароль.
  • Имейте в виду, что словарь «Пример» является примером того, что находится в файлах учетных записей

Проблема в том, что когда я ввожу правильное имя пользователя и пароль, он все равно возвращается как false. И поэтому; Мне нужна помощь в том, что я делаю неправильно , или что исправить.

Test

  def databaseNew (): with open ("accounts.pickle", "wb  ") как f: Entry = Setup [" me "] =" Tes "pickle.dump (Entry, f)  

Вы не получаете никакого ввода в ваш код, если вы вызовете confirm () , вы увидите False , поскольку вы повторяете каждое имя в dict с помощью для элемента в аккаунты , сравнивая его с пустой строкой. Вы также можете упростить свою функцию, чтобы return accounts.get (eUsername) == ePassword для проверки:

  def confirm (): print (  account.get (eUsername) == ePassword)  

Вам нужно упаковать ярлыки и т. д.

  import picklefrom tkinter import  * master = Tk () usernameL = Label (master, text = "Имя пользователя:") usernameL.pack () usernameB = Entry (master) usernameB.pack () passwordL = Label (master, text = "Пароль:") passwordL.  pack () passwordB = Entry (master, show = "*") passwordB.pack () master.resizable (width = False, height = False) master.state ('normal') master.title ("Gold Farm") def  database (): с open ("accounts.pickle", "rb") как f: return pickle.load (f) accounts = database () def confirm (): u, p = usernameB.get (), passwordB.get  () if accounts.get (u) == p: print (True) # делаем все, что здесь еще: print (False) # неправильный вход m = messagebox.askretrycancel ("Invalid input") if not m: master.quit (  ) Login = Button (master, text = "Login", command = confirm) Login.place (y = 350, x = 620) Войти. pack () mainloop ()  

Это грубый пример того, как добавлять новых пользователей к существующим dict и pickle, вы можете заполнить недостающую логику и привести в порядок дисплей с помощью все, что вы запланировали, и проверьте ввод:

  import picklefrom tkinter import * master = Tk () usernameL = Label (master, text = "Username:") usernameL.pack ()  usernameB = Entry (master) usernameB.pack () passwordL = Label (master, text = "Пароль:") passwordL.pack () passwordB = Entry (master, show = "*") passwordB.pack () master.resizable (  width = False, height = False) master.state ('normal') master.title ("Gold Farm") def database (): with open ("accounts.pickle", "rb") as f: return pickle.load  (f) accounts = database () def new (): u, p = usernameB.get (), passwordB.get (), если u в учетных записях: m = messagebox.askretrycancel («Недействительный», «Имя пользователя занято»), если нет  m: master.quit () else: accounts [u] = p с open ("accounts.pickle", "wb") as f: pickle.dump (accounts, f) # do whatdef confirm (): u, p =  usernameB.get (), passwordB.get (), если  ccounts.get (u) == p: print (True) # делаем все, что здесь еще: print (False) # делаем что угодно, если логин неверный m = messagebox.askretrycancel ("Invalid input") if not m: master.quit (  ) Login = Button (master, text = "Login", command = confirm) Login.place (y = 350, x = 620) Login.pack () new_user = Button (master, text = "Create acc", command = new  ) new_user.pack () mainloop ()  


Python 3 - Открыть диалоговое окно файла в tkinter с помощью filedialog · GitHub

#! Python 3.4
"" "
Откройте диалоговое окно файла в tkinter с помощью метода filedialog.
В Tkinter есть готовое диалоговое окно для доступа к файлам.
Этот пример разработан, чтобы показать, как вы можете использовать диалоговое окно файла задайте открытие имени файла
и используйте его в программе.
"" "
из tkinter import *
from tkinter import ttk
from tkinter.filedialog import askopenfilename
root = Tk ()
# Здесь мы запускаем панель файлового менеджера.
def OpenFile ():
name = askopenfilename (initialdir = " C:/Users/Batman/Documents/Programming/tkinter/",
filetypes = ((" Текстовый файл " , "* .txt"), ("Все файлы", "*. *")),
title = "Выберите файл. "
)
print (name)
# Использование try в случае, если пользователь вводит неизвестный файл или закрывается без выбор файла.
попробуйте:
с open (name, 'r') как UseFile:
print (UseFile.read ())
за исключением:
print («Файл не существует»)
Title = root.title ("Средство открытия файла")
label = ttk.Label (root, text = "Я БЭТМЕН !!!", foreground = "red", font = ("Helvetica", 16))
label.pack ()
# Панель меню
menu = Меню (корень)
root.config (menu = menu)
file = Меню (меню)
file.add_command (label = 'Open', command = OpenFile)
file.add_command (label = 'Exit', command = lambda: exit ())
menu.add_cascade (label = 'Файл', меню = файл)
root.mainloop ()
'' '
РЕЗУЛЬТАТЫ:
>>>
C:/Users/Scott/Documents/Programming/json/test.txt
"Мне нравится м над ним, протрите его! "
'' '

Оцените статью
futurei.ru
Добавить комментарий