인 ttk.combobox를 채우고 싶습니다. 약간의 문제가 있습니다. 도움이 필요합니다.이 문제는 python ttk.combobox 위젯과 관련되어 있습니다. 저는 일주일 전에 코딩을 시작한 python에 처음 입니다. 사용자 입력에 의해 채워지는 데이터베이스가 있습니다.이 데이터베이스는 사용자의 주식 입력 (예 : 항목, 비용, 공급 업체 등)을 저장합니다.이 부분은 할 수 있습니다.데이터베이스 쿼리 결과가
데이터베이스에서 'for'루프를 사용하여 데이터베이스 쿼리의 개별 항목을 ttk.combobox로 가져와 사용자가 선택할 수 있도록합니다. 그러나 내 문제는 매번 오류가 발생합니다. 내 데이터베이스 쿼리에서 내 항목 열 내의 모든 항목을 표시하는 콤보 박스가 필요합니다.
list = ['shoe', 'toy', 'bag']
combobox = ttk.Combobox(root)
combobox['values'] = list
내가 그러나 자수성가 한 목록 를 사용하는 나는 경우는, 잘 작동, 난에 대한 예를 찾을 수 없습니다 :
온라인 소스에서, 내가 ttk.combobox에 대한 예를 발견 파이썬에서 sqlite3의 쿼리를 사용하는 ttk.combobox
이 문제로 나를 도와 주셔서 감사합니다. 내가 어떻게 잘못했는지에 대한 설명과 설명은 내가 많이 도움이 될 것입니다. 가난하게 조직 된 코딩 스타일에 대해 용서해주십시오. 시간이 지남에 따라 더 나아질 수 있기를 바랍니다.
from tkinter import *
from tkinter import ttk
import sqlite3
class Example:
def __init__(self,master):
self.master = master
self.win_label = Label(master, text="New Stock Entry")
self.win_label.grid(row=0, columnspan=2,)
self.item_label = Label(master, text="Item Name", fg='black')
self.item_label.grid(row=1, column=0, sticky=W, padx=5, pady=5)
self.unitprice_lab = Label(master, text="Unit Price", fg='black')
self.unitprice_lab.grid(row=2, column=0, sticky=W, padx=5, pady=5)
self.total_price = Label(master, text="Total Price", fg='black')
self.total_price.grid(row=3, column=0, sticky=W, padx=5, pady=5)
self.quantity_lab = Label(master, text="Quantity", fg='black')
self.quantity_lab.grid(row=4, column=0, sticky=W, padx=5, pady=5)
self.manufacturer_lab = Label(master,text="Manufacturer", fg='black')
self.manufacturer_lab.grid(row=5, column=0, sticky=W, padx=5, pady=5)
############### Variables to store input ################
self.item = StringVar()
self.unitp = IntVar()
self.unitn = IntVar()
self.quantity = IntVar()
self.man = StringVar()
############ Widgets############
self.item_entry = Entry(master, width=25,textvariable=self.item)
self.item_entry.grid(row=1, column=1, padx=5, pady=5)
self.unitprice_entry = Entry(master, width=25,textvariable=self.unitp)
self.unitprice_entry.grid(row=2, column=1, sticky=W, padx=5, pady=5)
self.total_price_entry = Entry(master,width=25,textvariable=self.unitn)
self.total_price_entry.grid(row=3, column=1, sticky=W, padx=5, pady=5)
self.quantity_entry = Entry(master,width=25,textvariable=self.quantity)
self.quantity_entry.grid(row=4, column=1, sticky=W, padx=5, pady=5)
self.manufacturer_entry = Entry(master, width=25,textvariable=self.man)
self.manufacturer_entry.grid(row=5, column=1, sticky=W, padx=5, pady=5)
# button for save
self.button_save = Button(master,text="Save",command= self.insert_Dbs)
self.button_save.grid(row=6, column=1, pady=15, padx=10, sticky=W)
def second_window(self): # Second Window to allow user selection
t = Toplevel()
t.geometry('350x290')
t.title('Student Input')
############# widgets ###############
self.label1 = ttk.Label(t, text = 'Student Name')
self.label1.grid(row =0 , column =0)
self.label2 = ttk.Label(t, text='Item Collected')
self.label2.grid(row=0, column=1)
self.label3 = ttk.Label(t, text='Quantity')
self.label3.grid(row=0, column=2)
self.entry1 =ttk.Entry(t, width = 20)
self.entry1.grid(row =1 , column =0)
self.entry2 = ttk.Entry(t, width=20)
self.entry2.grid(row=1, column=2)
self.comb = ttk.Combobox(t,width = 15).grid(row =1 , column =1)
self.comb['value'] = self.combo_input
def insert_Dbs(self): # Function to insert input into database
self.a1 = self.item.get()
self.a2 = self.unitp.get()
self.a3 = self.unitn.get()
self.a4 = self.quantity.get()
self.a5 = self.man.get()
#db = sqlite3.connect('stockdbExample.db')
'''db.execute('create table stocks (item text '
', item_uprice integer,'
' item_nprice integer,'
' quantity integer,'
' manufacturer text)')'''
db = sqlite3.connect('stockdbExample.db')
db.execute('insert into stocks (item,'
' item_uprice,'
' item_nprice,'
' quantity,'
' manufacturer) values (?, ?, ?, ?,?)',
(self.a1, self.a2, self.a3, self.a4, self.a5))
db.commit()
self.combo_input()
self.second_window()
def combo_input(self):
db = sqlite3.connect('stockdbExample.db')
cursor = db.execute('select item from stocks')
for row in cursor.fetchall():
return row
root = Tk()
c = Example(root)
root.mainloop()
()'행과 수동으로 표준 파이썬 목록을 작성하는 나중에 Combobox와 함께 사용할 수 있습니다. – furas
첫 번째 규칙 : 항상 질문하기 FULL 오류 메시지 - 우리는 마음에 들지 않으며이 오류를보기 위해 코드를 실행할 수 없습니다. 그리고 FULL 메시지 (Traceback)를 써라. 마지막 텍스트뿐만 아니라 많은 유용한 정보를 얻을 수있다. – furas
대단히 고마워, 여기에 새로운 것도 있는데, 필자의 후속 질문에 좋은 조언을 확실히 전할 것입니다. – Peter