Мне было трудно найти решение на моем месте, где теги и tag.configured не будут работать, чтобы изменить мой странный и ровный цвет фона, чтобы легко видеть строки в списке инвентаря, даже когда я копирую пример кода, но все еще не будет работать для меня. Чтобы лучше понять проблему, это та часть кода, с которой у нас возникают проблемы:
for record in records:
#print(sorted(str(record[0]), reverse=False))
col_head.insert("", "end", text=record, values=(record[0], record[1], record[2], record[3], record[4], record[5]), tags=('ODDROW'))
col_head.tag_configure('ODDROW', background='gray')
и при выполнении. , .
Снимок экрана вывода
Вид дерева в инвентаре даже не отображает серый фон или другие цвета, которые я пытаюсь ввести в tag_configure, если вы хотите посмотреть на вся программа, вот она
from tkinter import *
from tkinter import ttk
from datetime import datetime
import sqlite3
import os
from tkinter import *
from tkinter import ttk
from datetime import datetime
import sqlite3
import os
def invent():
def inventory_tab():
invent_display = Tk()
invent_display.geometry("1250x650")
invent_display.configure(bg="gray")
invent_display.title("Inventory Tab")
#Name of the Retailer FRAME1
title_box = Frame(invent_display, width=1000, height=100, pady=5, bd=10, background='light blue', relief="raise")
title_box.grid(column=1, row=1)
retailer_name = Label(title_box, text='retailer name', width=50, height=1, bd=2, font=("Calibri", 35), relief="sunken")
retailer_name.grid(column=0,row=0, pady=5)
#Date FRAME2
dtformat = datetime.now()
date_time_format = dtformat.strftime("%d/%m/%Y %H:%M:%S")
date_and_time = Label(title_box, text=date_time_format, width=50, height=1, bd=2, font=("Calibri", 20), fg='green', relief="sunken")
date_and_time.grid(column=0,row=1)
# INVENTORY LIST FRAME3
inventory_list = Frame(invent_display, width=500, height=500, bd=10, pady=10, relief="sunken")
inventory_list.grid(column=1, row=2)
# treeview Multiple Column
col_head = ttk.Treeview(inventory_list,
column=("prod_id", "p_name", "p_brand", "initial_stock", "stock", "price" ),
show='headings')
#scrollbar in the Column
invent_scroll = Scrollbar(inventory_list, orient="vertical", command=col_head.yview)
invent_scroll.grid(column=2,row=1, sticky=NS)
col_head.configure(yscrollcommand=invent_scroll.set)
#heading TItle
col_head.heading("#1", text="Product ID")
col_head.heading("#2", text="Product Name", anchor=W)#, command=inventory_sort)
col_head.heading("#3", text="Product Brand")
col_head.heading("#4", text="Initial Stock")
col_head.heading("#5", text="Stock")
col_head.heading("#6", text="Price")
col_head.grid(column=1, row=1)
# Input Values from Database
# Create Database
conn = sqlite3.connect('Inventory_table.db')
# Create cursor
c = conn.cursor()
# print
c.execute("SELECT prod_id, p_name, p_brand, initial_stock, stock, price FROM inventory")
records = c.fetchall()
for record in records:
#print(sorted(str(record[0]), reverse=False))
col_head.insert("", "end", text=record, values=(record[0], record[1], record[2], record[3], record[4], record[5]), tags=('ODDROW'))
col_head.tag_configure('ODDROW', background='blue')
# BUTTON ORGANIZE FRAME4
button_organize = Frame(invent_display, width=1200, height=250, pady=5, bd=10, relief="raise")
button_organize.grid(column=1, row=3)
#Column1 add record FRAM4
add_record_label = Label(button_organize, text='Add Record Tab', width=71, height=3, bg='pink')
add_record_label.grid(column=1,row=0)
add_rec_frame = Frame(button_organize, width=400, height=250, bd=2, pady=5, relief="raise")
add_rec_frame.grid(column=1,row=1)
#LABEL
p_name_label = Label(add_rec_frame, text='Product Name:')
p_name_label.grid(row=0, column=0, pady=(10, 0))
p_brand_label = Label(add_rec_frame, text='Product Brand:')
p_brand_label.grid(row=1, column=0)
initial_stock_label = Label(add_rec_frame, text='Initial Stock: ')
initial_stock_label.grid(row=2, column=0)
stock_label = Label(add_rec_frame, text='Stock:')
stock_label.grid(row=3, column=0)
price_label = Label(add_rec_frame, text='Price:')
price_label.grid(row=4, column=0)
#ENTRY
p_name = Entry(add_rec_frame, width=30)
p_name.grid(row=0, column=1, padx=20, pady=(10, 0))
p_brand = Entry(add_rec_frame, width=30)
p_brand.grid(row=1, column=1, padx=20)
initial_stock = Entry(add_rec_frame, width=30)
initial_stock.grid(row=2, column=1, padx=20)
stock = Entry(add_rec_frame, width=30)
stock.grid(row=3, column=1, padx=20)
price = Entry(add_rec_frame, width=30)
price.grid(row=4, column=1, padx=20, pady=5)
#BUTTON
add_btn = Button(add_rec_frame, text="Add record")#, command=add_record)
add_btn.grid(row=1, column=2, columnspan=2, padx=5, pady=5, ipadx=58)
clear_btn = Button(add_rec_frame, text="Clear Entry")#, command=add_record)
clear_btn.grid(row=3, column=2, columnspan=2, padx=5, pady=5, ipadx=58)
#Column2 edit/search/delete recordsFRAM4
#Column3 inventory setting FRAM4
invent_display.mainloop()
# Insert Variable Here only used for Inventory Tab
table_checker = os.listdir()
if 'Inventory_table.db' in table_checker:
# Create Database
conn = sqlite3.connect('Inventory_table.db')
# Create cursor
c = conn.cursor()
inventory_tab()
else:
# Create Database
conn = sqlite3.connect('Inventory_table.db')
# Create cursor
c = conn.cursor()
c.execute("""CREATE TABLE inventory (
prod_id integer,
p_name text,
p_brand text,
initial_stock integer,
stock integer,
price integer
)""")
inventory_tab()
invent()
Кстати, я новичок в python и недавно узнал о tkinter и некоторых других вещах. Так что любая помощь и предложение высоко ценятся.
Кстати, этот код нуждается в БД, файл здесь, если вы собираетесь запустить программу Inventory_table.db
Еще раз спасибо за помощь!
PS Я использую Python 3.8 в качестве интерпретатора моего проекта с IDE Pycharm
EDIT: версия tkinter, которую я использую, основана на tkinter. TclVersion - версия 8.6