【发布时间】:2021-10-11 12:16:02
【问题描述】:
我正在使用 Python 3 和 TKinter。我需要第二个组合来加载基于第一个组合选择的信息。在第一个组合框中选择后,第二个组合框为空。
第一个组合做正确的事,但第二个组合没有得到任何信息,即使我使用的是相同类型的代码。
我尝试过组合 sql 语句,但这也无济于事。
谁能告诉我我做错了什么。不用说我是新手。
这是我的代码:
from os import name
import tkinter as tk
from tkinter import *
import sqlite3
import random
#======= IMPORTS COMBOBOX =============
from tkinter import ttk
from sqlite3 import Error
from tkinter.font import BOLD
def Clear(event):
usernameLabel.config(textvariable=' ')
passwordLabel.config(textvariable=' ')
print('It worked')
def Str3f(event):
global Str3
Str3 = Person_Combo.get()
print(Str3)
# SQL CONNECTION TO TABLE "NAMES"
sqlName = sqlite3.connect('Pass.db')
c2 = sqlName.cursor()
c2.execute('SELECT Name FROM Passwords WHERE Person= ?', (Str3, ))
# WHERE Person= ?', (Str3, ))
global mydata2
mydata2 = c2.fetchall()
# global Namers2
# Namers2 = [mydata2]
c2.close()
sqlName.close()
def EnterClick():
global Str1
global Str2
global UName
global UPass
Str1 = Person_Combo.get()
Str2 = Name_Combo.get()
print(Str2)
UName = StringVar()
UPass = StringVar()
connection = sqlite3.connect('Pass.db')
cursor = connection.cursor()
cursor.execute('SELECT * FROM Passwords WHERE Person= ? AND Name= ?', (Str1, Str2, ))
record = cursor.fetchone()
UName.set('Username: ' + record[4])
UPass.set('Password: ' + record[5])
usernameLabel.config(textvariable=UName, font=("Halvetica", 16))
passwordLabel.config(textvariable=UPass, font=("Halvetica", 16))
cursor.close()
connection.close()
# ---------------------------------------------------------------------------------
#=========== MAIN WINDOW ===============
root = Tk()
root.geometry('500x700')
root.title('Password Saver')
my_menu = Menu(root)
# CREATE LABELS AND TEXT ENTRY TO DISPLAY RESULTS
TopLabel = Label(root, text='PASSWORD SAVER', font=('Halvetica 20'))
TopLabel.pack(pady=30)
# SQL CONNECTION TO TABLE "PERSON"
sqlPerson = sqlite3.connect('Pass.db')
c1 = sqlPerson.cursor()
# c2 = sqlPerson.cursor()
c1.execute('SELECT DISTINCT Person FROM Passwords')
# c2.execute('SELECT Name From Passwords')
mydata1 = c1.fetchall()
# mydata2 = c2.fetchall()
Namers = [mydata1]
# Namers2 = [mydata2]
c1.close()
# c2.close()
sqlPerson.close()
# Create a person combobox
Person_Combo = ttk.Combobox(root, value=mydata1)
Person_Combo.pack(pady=20)
# Person_Combo.bind('<FocusIn>')
global Str3
Str3 = Person_Combo.get()
print(Str3)
# SQL CONNECTION TO TABLE "NAMES"
sqlName = sqlite3.connect('Pass.db')
c2 = sqlName.cursor()
c2.execute('SELECT Name FROM Passwords WHERE Person= ?', (Str3, ))
# WHERE Person= ?', (Str3, ))
mydata2 = c2.fetchall()
c2.close()
sqlName.close()
# Create a results combobox
Name_Combo = ttk.Combobox(root, value=mydata2)
Name_Combo.pack(pady=20)
Button1 = ttk.Button(root, text="Enter", command=EnterClick)
Button1.pack(pady=20)
usernameLabel = Label(root,)
usernameLabel.pack()
passwordLabel = Label(root, )
passwordLabel.pack()
Person_Combo.bind('<FocusIn>', Clear)
root.mainloop()
【问题讨论】: