NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: python oprava, úprava kódu

Aktivity
Avatar
martin
Člen
Avatar
martin :1.10.2024 17:47

každá položka bude mít svůj formát výstupu do PDF, pokud vyberu například položky "Finn - power FP 110" a "Pila Pressta-Eisele" kde výstup je v pořádku " velmi podobný formát výstupu" tak mě to funguje jak potřebuju. a teď jsem chtěl přidat položku "osobní odběr - zákazník" a v tu chvíli co fungovalo už m nefunguje. prosím o pomoc

Zkusil jsem: položky "hydraulika" a " stavebnice" jsou v pořádku kód funguje

import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from reportlab.lib­.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors
from reportlab.pdfba­se.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.units import inch
import calendar
import os

# Načtení a registrace fontu Calibri
def register_cali­bri_font():
try:
pdfmetrics.re­gisterFont(TTFon­t('Calibri', 'calibri.ttf'))
pdfmetrics.re­gisterFont(TTFon­t('Calibri-Bold', 'calibri-bold.ttf'))
except Exception as e:
messagebox.sho­werror("Chyba", f"Nepodařilo se registrovat font: {str(e)}")

def create_pdf(se­lected_items, month, year, column_widths):
try:
file_name = f"report_{mon­th}_{year}.pdf"

# Nastavení PDF dokumentu na formát A4
c = canvas.Canvas(fi­le_name, pagesize=A4)
width, height = A4

# Český název dnů v týdnu
czech_days = ["Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"]

# Český název měsíců
czech_months = [
"Leden", "Únor", "Březen", "Duben", "Květen", "Červen",
"Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
]

# Nastavení fontu pro tabulky
c.setFont("Ca­libri", 12)

# Nastavení horního okraje
top_margin = 25 # Horní okraj v bodech
y_position = height - top_margin # Počáteční pozice pro text a tabulky

for item in selected_items:
# Kontrola, zda přidat dodatečný sloupec
add_column = False
if item == "Pila Pressta-Eisele":
add_column = True

# Vytvoření tabulky pro každý zaškrtnutý stroj
if add_column:
# Přidáme nový sloupec, pokud je zaškrtnutý "Pila Pressta-Eisele"
data = [
["STROJ", "", item, f"{czech_months[mon­th - 1]} {year}"],
["DATUM", "Řez", "Závady, poškození stroje, pracovní odchylky", "PODPIS"]
]
current_colum­n_widths = [0.8 * inch, 0.4 * inch, 4.9 * inch, 1 * inch] # Přizpůsobení šířky sloupců
else:
data = [
["Stroj", item, f"{czech_months[mon­th - 1]} {year}"],
["DATUM", "Závady, poškození stroje, pracovní odchylky zjištěné v průběhu provozu", "PODPIS"]
]
current_colum­n_widths = [0.8 * inch, 5.3 * inch, 1 * inch] # Původní šířky sloupců

# Výpočet dnů v měsíci
_, last_day = calendar.monthran­ge(year, month)
for day in range(1, last_day + 1):
weekday = calendar.week­day(year, month, day)
date_str = f"{day}. {czech_days[we­ekday]}"
if add_column:
data.append([da­te_str, "", "", ""])
else:
data.append([da­te_str, "", ""])

# Nastavení výšky řádků
row_heights = [0.40 * inch] * len(data) # Základní výška všech řádků
for i in range(2, len(row_heights)): # Změna výšky pro víkendy
weekday = calendar.week­day(year, month, i - 1) # -1, protože první dva řádky jsou hlavičky
if weekday >= 5: # Sobota a Neděle
row_heights[i] = 0.25 * inch * 0.55 # Výška pro víkendy

# Definování stylu tabulky a její šířky
table = Table(data, colWidths=curren­t_column_widths, rowHeights=row_he­ights)

# Nastavení stylu tabulky
styles = [
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Vertikální centrování
('BACKGROUND', (0, 1), (-1, 1), colors.lightgrey),
('BACKGROUND', (0, 2), (-1, -1), colors.white),
('GRID', (0, 0), (-1, -1), 1, colors.black),
('FONT', (0, 0), (-1, 0), 'Calibri-Bold', 14),
('FONT', (0, 1), (-1, -1), 'Calibri', 8),
]

for i in range(2, len(data)): # Začínáme od řádku 2, protože první dva řádky jsou hlavičky
weekday = calendar.week­day(year, month, i - 1) # -1, protože první dva řádky jsou hlavičky
if weekday >= 5: # Sobota a Neděle
styles.append

table.setStyle(Ta­bleStyle(styles))

# Umístění tabulky na PDF
table.wrapOn(c, width, height)
table_height = sum(row_heights) # Celková výška tabulky
if y_position - table_height < top_margin:
c.showPage()
y_position = height - top_margin

table.drawOn(c, 0.5*inch, y_position - table_height)
y_position -= table_height + 0.5 * inch # Mezera mezi tabulkami

# Uložení PDF
c.save()
print(f"Soubor {file_name} byl úspěšně vytvořen.")

# Otevření PDF souboru pro náhled
if os.name == 'nt': # Windows
os.startfile(fi­le_name, "open")
else:
messagebox.sho­winfo("Informa­ce", f"PDF soubor {file_name} byl vytvořen, ale nemohu ho otevřít na tomto operačním systému.")
except Exception as e:
error_message = f"Něco se pokazilo při vytváření PDF: {str(e)}"
print(error_mes­sage)
messagebox.sho­werror("Chyba", error_message)

def print_selected():
try:
selected_items = []

# Kontrola zaškrtnutých tlačítek v sekci HYDRAULIKA
for item, var in hydraulika_items:
if var.get():
selected_item­s.append(item)

# Kontrola zaškrtnutých tlačítek v sekci STAVEBNICE
for item, var in stavebnice_items:
if var.get():
selected_item­s.append(item)

# Kontrola zaškrtnutých tlačítek v sekci OSTATNÍ
for item, var in ostatni_items:
if var.get():
selected_item­s.append(item)

# Kontrola hlavních zaškrtávacích polí
auto_print = auto_print_var­.get()
print_to_pdf = print_to_pdf_var­.get()
preview_before_print = preview_before_prin­t_var.get()

# Výběr měsíce a roku
month_index = month_combobox­.current()
if month_index == -1:
messagebox.show­warning("Varo­vání", "Prosím, vyberte měsíc.")
return
month = month_index + 1 # indexování od 0
try:
year = int(year_combo­box.get())
except ValueError:
messagebox.show­warning("Varo­vání", "Prosím, vyberte správný rok.")
return

if not selected_items:
messagebox.show­warning("Varo­vání", "Nebyly vybrány žádné položky.")
return

column_widths = [0.8 * inch, 0.4 * inch, 4.9 * inch, 1 * inch]
create_pdf(se­lected_items, month, year, column_widths)

# Náhled tisku, pokud je zaškrtnuto "Náhled před tiskem"
if preview_before_prin­t:
messagebox.sho­winfo("Náhled", "Náhled tisku je zatím neimplementován.")

# Automatický tisk, pokud je zaškrtnuto "Automatický tisk"
if auto_print:
messagebox.sho­winfo("Tisk", "Automatický tisk je zatím neimplementován.")

# Zpráva o vybraných položkách a nastaveních
message = "Vybrané položky:\n" + "\n".join(selec­ted_items)
if print_to_pdf:
message += "\nTisk do PDF: Zapnuto"
if auto_print:
message += "\nAutomatický tisk: Zapnuto"
if preview_before_prin­t:
message += "\nNáhled před tiskem: Zapnuto"

messagebox.sho­winfo("Tisk", message)

except Exception as e:
error_message = f"Něco se pokazilo: {str(e)}"
print(error_mes­sage)
messagebox.sho­werror("Chyba", error_message)

# Inicializace Tkinter
root = tk.Tk()
root.title("Tiskové Nastavení")
root.geometry("800x600­") # Velikost okna, upravte dle potřeby

# Sekce pro výběr měsíce a roku
selection_frame = tk.Frame(root, bg="#f5f5f5", pady=10)
selection_fra­me.grid(row=0, column=0, columnspan=3, padx=10, pady=5, sticky='nsew')

month_label = tk.Label(selec­tion_frame, text="Měsíc:", bg="#f5f5f5")
month_label.grid(row=0, column=0, padx=5)

month_combobox = ttk.Combobox(se­lection_frame, values=[calen­dar.month_name[i] for i in range(1, 13)], state="readonly")
month_combobox­.grid(row=0, column=1, padx=5)
month_combobox­.set(calendar­.month_name[1]) # Defaultně nastavit na leden

year_label = tk.Label(selec­tion_frame, text="Rok:", bg="#f5f5f5")
year_label.grid(row=0, column=2, padx=5)

year_combobox = ttk.Combobox(se­lection_frame, values=[str(year) for year in range(2000, 2031)], state="readonly")
year_combobox­.grid(row=0, column=3, padx=5)
year_combobox­.set("2024") # Defaultně nastavit na aktuální rok

# Rámeček pro sekci HYDRAULIKA
hydraulika_frame = tk.LabelFrame(root, text="HYDRAULIKA", font=('Calibri', 12, 'bold'), bg="#f5f5f5", padx=10, pady=10)
hydraulika_fra­me.grid(row=1, column=0, padx=10, pady=5, sticky='nsew')

# Položky s tlačítky v sekci HYDRAULIKA
hydraulika_items = [
("Finn - power FP 110", tk.BooleanVar()),
("Finn - power FP 140", tk.BooleanVar()),
("Bomar proline 320.280 H.sx", tk.BooleanVar()),
("HYDROSCAND 5-50", tk.BooleanVar()),
("HYDROSCAND 5-75", tk.BooleanVar()),
("Navíjení hadic", tk.BooleanVar()),
("Ořezávačka hadic", tk.BooleanVar()),
]

for item, var in hydraulika_items:
tk.Checkbutton(
hydraulika_frame,
text=f"{item} ",
variable=var,
font=('Calibri', 12),
bg="#f5f5f5"
).grid(sticky='w', padx=5, pady=2)

# Rámeček pro sekci STAVEBNICE
stavebnice_frame = tk.LabelFrame(root, text="STAVEBNICE", font=('Calibri', 12, 'bold'), bg="#f5f5f5", padx=10, pady=10)
stavebnice_fra­me.grid(row=1, column=1, padx=10, pady=5, sticky='nsew')

# Položky s tlačítky v sekci STAVEBNICE
stavebnice_items = [
("Pila Pilous ARG 220 Plus", tk.BooleanVar()),
("Pila Pressta-Eisele", tk.BooleanVar()),
("Vrtačka LINMAC VS30 TW-H", tk.BooleanVar()),
("Závitořez Mosquito", tk.BooleanVar()),
("Stojanová vrtačka", tk.BooleanVar())
]

for item, var in stavebnice_items:
tk.Checkbutton(
stavebnice_frame,
text=f"{item} ",
variable=var,
font=('Calibri', 12),
bg="#f5f5f5"
).grid(sticky='w', padx=5, pady=2)

# Rámeček pro sekci OSTATNÍ
ostatni_frame = tk.LabelFrame(root, text="OSTATNÍ", font=('Calibri', 12, 'bold'), bg="#f5f5f5", padx=10, pady=10)
ostatni_frame­.grid(row=1, column=2, padx=10, pady=5, sticky='nsew')

# Položky s tlačítky v sekci OSTATNÍ
ostatni_items = [
("RKL - doprava", tk.BooleanVar()),
("UCT - protokol", tk.BooleanVar()),
("Osobní odběr - zákazník", tk.BooleanVar()),
("Příjem zboží - logistika", tk.BooleanVar()),
]

for item, var in ostatni_items:
tk.Checkbutton(
ostatni_frame,
text=f"{item} ",
variable=var,
font=('Calibri', 12),
bg="#f5f5f5"
).grid(sticky='w', padx=5, pady=2)

# Rámeček pro zaškrtávací pole
options_frame = tk.Frame(root, bg="#f5f5f5", pady=10)
options_frame­.grid(row=2, column=0, columnspan=3, pady=10, sticky='nsew')

auto_print_var = tk.BooleanVar()
print_to_pdf_var = tk.BooleanVar()
preview_before_prin­t_var = tk.BooleanVar()

auto_print_check = tk.Checkbutton(
options_frame,
text="Automatický tisk",
variable=auto_prin­t_var,
font=('Calibri', 10),
bg="#f5f5f5"
)
auto_print_chec­k.grid(sticky='w', padx=5, pady=2)

print_to_pdf_check = tk.Checkbutton(
options_frame,
text="Tisk do PDF",
variable=prin­t_to_pdf_var,
font=('Calibri', 10),
bg="#f5f5f5"
)
print_to_pdf_chec­k.grid(sticky='w', padx=5, pady=2)

preview_before_prin­t_check = tk.Checkbutton(
options_frame,
text="Náhled před tiskem",
variable=previ­ew_before_prin­t_var,
font=('Calibri', 10),
bg="#f5f5f5"
)
preview_before_prin­t_check.grid(stic­ky='w', padx=5, pady=2)

# Tlačítko pro tisk
print_button = tk.Button(root, text="Tisk", command=print_se­lected, font=('Calibri', 12))
print_button.grid(row=3, column=0, columnspan=3, pady=10)

# Nastavení, aby se rámečky přizpůsobily velikosti okna
root.grid_colum­nconfigure(0, weight=1)
root.grid_colum­nconfigure(1, weight=1)
root.grid_colum­nconfigure(2, weight=1)
root.grid_row­configure(1, weight=1)
root.grid_row­configure(2, weight=1)

# Registrace fontu Calibri
register_cali­bri_font()

root.mainloop()

Chci docílit: chci přidat formát výstupu pro položku "osobní odběr-zákazník" což mě "funguje" ale přestalo fungovat vše ostatní

import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from reportlab.lib­.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors
from reportlab.pdfba­se.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.units import inch
import calendar
import os

# Načtení a registrace fontu Calibri
def register_cali­bri_font():
try:
pdfmetrics.re­gisterFont(TTFon­t('Calibri', 'calibri.ttf'))
pdfmetrics.re­gisterFont(TTFon­t('Calibri-Bold', 'calibri-bold.ttf'))
except Exception as e:
messagebox.sho­werror("Chyba", f"Nepodařilo se registrovat font: {str(e)}")

def create_pdf(se­lected_items, month, year, column_widths):
try:
file_name = f"report_{mon­th}_{year}.pdf"

# Nastavení PDF dokumentu na formát A4
c = canvas.Canvas(fi­le_name, pagesize=A4)
width, height = A4

# Český název dnů v týdnu
czech_days = ["Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"]

# Český název měsíců
czech_months = [
"Leden", "Únor", "Březen", "Duben", "Květen", "Červen",
"Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
]

# Nastavení fontu pro tabulky
c.setFont("Ca­libri", 12)

# Nastavení horního okraje
top_margin = 22 # Horní okraj v bodech
y_position = height - top_margin # Počáteční pozice pro text a tabulky

for item in selected_items:
# Podmínka pro "Pila Pressta-Eisele"
add_column = False
if item == "Pila Pressta-Eisele":
add_column = True

# Podmínka pro "Osobní odběr - zákazník"
if item == "Osobní odběr - zákazník":
data = [
["Zákazník", "OPIC -", "Datum expedice", "Podpis", "","Zákazník","OPIC -","Datum expedice","Podpis"]
]
# Přidání řádků s výškou 20
for _ in range(15): # 15 řádků, ale můžete změnit podle potřeby
data.append(["", "", "", ""])

# Definování šířky sloupců pro "Osobní odběr - zákazník"
current_colum­n_widths = [1.3 * inch, 1 * inch, .7 * inch, .7 * inch,.2 * inch,1.3 * inch,1 * inch,.7 * inch,.7 * inch]
row_heights = [15] * len(data) # Nastavení výšky všech řádků na 20 bodů
elif add_column:
# Přidáme nový sloupec, pokud je zaškrtnutý "Pila Pressta-Eisele"
data = [
["STROJ", "", item, f"{czech_months[mon­th - 1]} {year}"],
["DATUM", "Řez", "Závady, poškození stroje, pracovní odchylky", "PODPIS"]
]
current_colum­n_widths = [0.8 * inch, 0.4 * inch, 4.9 * inch, 1 * inch]
row_heights = [0.40 * inch] * len(data) # Výška všech řádků
else:
data = [
["Stroj", item, f"{czech_months[mon­th - 1]} {year}"],
["DATUM", "Závady, poškození stroje, pracovní odchylky zjištěné v průběhu provozu", "PODPIS"]
]
current_colum­n_widths = [0.8 * inch, 5.3 * inch, 1 * inch]
row_heights = [0.40 * inch] * len(data)

# Výpočet dnů v měsíci
_, last_day = calendar.monthran­ge(year, month)
for day in range(1, last_day + 1):
weekday = calendar.week­day(year, month, day)
date_str = f"{day}. {czech_days[we­ekday]}"
if add_column:
data.append([da­te_str, "", "", ""])
else:
data.append([da­te_str, "", ""])

for i in range(2, len(row_heights)): # Změna výšky pro víkendy
weekday = calendar.week­day(year, month, i - 1)
if weekday >= 5: # Sobota a Neděle
row_heights[i] = 0.25 * inch * 0.55 # Výška pro víkendy

# Definování stylu tabulky a její šířky
table = Table(data, colWidths=curren­t_column_widths, rowHeights=row_he­ights)

# Nastavení stylu tabulky
styles = [
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
('GRID', (0, 0), (-1, -1), 1, colors.black),
('FONT', (0, 0), (-1, 0), 'Calibri-Bold', 14),
('FONT', (0, 1), (-1, -1), 'Calibri', 8),
]

table.setStyle(Ta­bleStyle(styles))

# Umístění tabulky na PDF
table.wrapOn(c, width, height)
table_height = sum(row_heights) # Celková výška tabulky
if y_position - table_height < top_margin:
c.showPage()
y_position = height - top_margin

table.drawOn(c, 0.5*inch, y_position - table_height)
y_position -= table_height + 0.5 * inch # Mezera mezi tabulkami

# Uložení PDF
c.save()
print(f"Soubor {file_name} byl úspěšně vytvořen.")

# Otevření PDF souboru pro náhled
if os.name == 'nt': # Windows
os.startfile(fi­le_name, "open")
else:
messagebox.sho­winfo("Informa­ce", f"PDF soubor {file_name} byl vytvořen, ale nemohu ho otevřít na tomto operačním systému.")
except Exception as e:
error_message = f"Něco se pokazilo při vytváření PDF: {str(e)}"
print(error_mes­sage)
messagebox.sho­werror("Chyba", error_message)

def print_selected():
try:
selected_items = []

# Kontrola zaškrtnutých tlačítek v sekci HYDRAULIKA
for item, var in hydraulika_items:
if var.get():
selected_item­s.append(item)

# Kontrola zaškrtnutých tlačítek v sekci STAVEBNICE
for item, var in stavebnice_items:
if var.get():
selected_item­s.append(item)

# Kontrola zaškrtnutých tlačítek v sekci OSTATNÍ
for item, var in ostatni_items:
if var.get():
selected_item­s.append(item)

# Kontrola hlavních zaškrtávacích polí
auto_print = auto_print_var­.get()
print_to_pdf = print_to_pdf_var­.get()
preview_before_print = preview_before_prin­t_var.get()

# Výběr měsíce a roku
month_index = month_combobox­.current()
if month_index == -1:
messagebox.show­warning("Varo­vání", "Prosím, vyberte měsíc.")
return
month = month_index + 1 # indexování od 0
try:
year = int(year_combo­box.get())
except ValueError:
messagebox.show­warning("Varo­vání", "Prosím, vyberte správný rok.")
return

if not selected_items:
messagebox.show­warning("Varo­vání", "Nebyly vybrány žádné položky.")
return

column_widths = [0.8 * inch, 0.4 * inch, 4.9 * inch, 1 * inch]
create_pdf(se­lected_items, month, year, column_widths)

# Náhled tisku, pokud je zaškrtnuto "Náhled před tiskem"
if preview_before_prin­t:
messagebox.sho­winfo("Náhled", "Náhled tisku je zatím neimplementován.")

# Automatický tisk, pokud je zaškrtnuto "Automatický tisk"
if auto_print:
messagebox.sho­winfo("Tisk", "Automatický tisk je zatím neimplementován.")

# Zpráva o vybraných položkách a nastaveních
message = "Vybrané položky:\n" + "\n".join(selec­ted_items)
if print_to_pdf:
message += "\nTisk do PDF: Zapnuto"
if auto_print:
message += "\nAutomatický tisk: Zapnuto"
if preview_before_prin­t:
message += "\nNáhled před tiskem: Zapnuto"

messagebox.sho­winfo("Tisk", message)

except Exception as e:
error_message = f"Něco se pokazilo: {str(e)}"
print(error_mes­sage)
messagebox.sho­werror("Chyba", error_message)

# Inicializace Tkinter
root = tk.Tk()
root.title("Tiskové Nastavení")
root.geometry("800x600­") # Velikost okna, upravte dle potřeby

# Sekce pro výběr měsíce a roku
selection_frame = tk.Frame(root, bg="#f5f5f5", pady=10)
selection_fra­me.grid(row=0, column=0, columnspan=3, padx=10, pady=5, sticky='nsew')

month_label = tk.Label(selec­tion_frame, text="Měsíc:", bg="#f5f5f5")
month_label.grid(row=0, column=0, padx=5)

month_combobox = ttk.Combobox(se­lection_frame, values=[calen­dar.month_name[i] for i in range(1, 13)], state="readonly")
month_combobox­.grid(row=0, column=1, padx=5)
month_combobox­.set(calendar­.month_name[1]) # Defaultně nastavit na leden

year_label = tk.Label(selec­tion_frame, text="Rok:", bg="#f5f5f5")
year_label.grid(row=0, column=2, padx=5)

year_combobox = ttk.Combobox(se­lection_frame, values=[str(year) for year in range(2000, 2031)], state="readonly")
year_combobox­.grid(row=0, column=3, padx=5)
year_combobox­.set("2024") # Defaultně nastavit na aktuální rok

# Rámeček pro sekci HYDRAULIKA
hydraulika_frame = tk.LabelFrame(root, text="HYDRAULIKA", font=('Calibri', 12, 'bold'), bg="#f5f5f5", padx=10, pady=10)
hydraulika_fra­me.grid(row=1, column=0, padx=10, pady=5, sticky='nsew')

# Položky s tlačítky v sekci HYDRAULIKA
hydraulika_items = [
("Finn - power FP 110", tk.BooleanVar()),
("Finn - power FP 140", tk.BooleanVar()),
("Bomar proline 320.280 H.sx", tk.BooleanVar()),
("HYDROSCAND 5-50", tk.BooleanVar()),
("HYDROSCAND 5-75", tk.BooleanVar()),
("Navíjení hadic", tk.BooleanVar()),
("Ořezávačka hadic", tk.BooleanVar()),
]

for item, var in hydraulika_items:
tk.Checkbutton(
hydraulika_frame,
text=f"{item} ",
variable=var,
font=('Calibri', 12),
bg="#f5f5f5"
).grid(sticky='w', padx=5, pady=2)

# Rámeček pro sekci STAVEBNICE
stavebnice_frame = tk.LabelFrame(root, text="STAVEBNICE", font=('Calibri', 12, 'bold'), bg="#f5f5f5", padx=10, pady=10)
stavebnice_fra­me.grid(row=1, column=1, padx=10, pady=5, sticky='nsew')

# Položky s tlačítky v sekci STAVEBNICE
stavebnice_items = [
("Pila Pilous ARG 220 Plus", tk.BooleanVar()),
("Pila Pressta-Eisele", tk.BooleanVar()),
("Vrtačka LINMAC VS30 TW-H", tk.BooleanVar()),
("Závitořez Mosquito", tk.BooleanVar()),
("Stojanová vrtačka", tk.BooleanVar())
]

for item, var in stavebnice_items:
tk.Checkbutton(
stavebnice_frame,
text=f"{item} ",
variable=var,
font=('Calibri', 12),
bg="#f5f5f5"
).grid(sticky='w', padx=5, pady=2)

# Rámeček pro sekci OSTATNÍ
ostatni_frame = tk.LabelFrame(root, text="OSTATNÍ", font=('Calibri', 12, 'bold'), bg="#f5f5f5", padx=10, pady=10)
ostatni_frame­.grid(row=1, column=2, padx=10, pady=5, sticky='nsew')

# Položky s tlačítky v sekci OSTATNÍ
ostatni_items = [
("RKL - doprava", tk.BooleanVar()),
("UCT - protokol", tk.BooleanVar()),
("Osobní odběr - zákazník", tk.BooleanVar()),
("Příjem zboží - logistika", tk.BooleanVar()),
]

for item, var in ostatni_items:
tk.Checkbutton(
ostatni_frame,
text=f"{item} ",
variable=var,
font=('Calibri', 12),
bg="#f5f5f5"
).grid(sticky='w', padx=5, pady=2)

# Rámeček pro zaškrtávací pole
options_frame = tk.Frame(root, bg="#f5f5f5", pady=10)
options_frame­.grid(row=2, column=0, columnspan=3, pady=10, sticky='nsew')

auto_print_var = tk.BooleanVar()
print_to_pdf_var = tk.BooleanVar()
preview_before_prin­t_var = tk.BooleanVar()

auto_print_check = tk.Checkbutton(
options_frame,
text="Automatický tisk",
variable=auto_prin­t_var,
font=('Calibri', 10),
bg="#f5f5f5"
)
auto_print_chec­k.grid(sticky='w', padx=5, pady=2)

print_to_pdf_check = tk.Checkbutton(
options_frame,
text="Tisk do PDF",
variable=prin­t_to_pdf_var,
font=('Calibri', 10),
bg="#f5f5f5"
)
print_to_pdf_chec­k.grid(sticky='w', padx=5, pady=2)

preview_before_prin­t_check = tk.Checkbutton(
options_frame,
text="Náhled před tiskem",
variable=previ­ew_before_prin­t_var,
font=('Calibri', 10),
bg="#f5f5f5"
)
preview_before_prin­t_check.grid(stic­ky='w', padx=5, pady=2)

# Tlačítko pro tisk
print_button = tk.Button(root, text="Tisk", command=print_se­lected, font=('Calibri', 12))
print_button.grid(row=3, column=0, columnspan=3, pady=10)

# Nastavení, aby se rámečky přizpůsobily velikosti okna
root.grid_colum­nconfigure(0, weight=1)
root.grid_colum­nconfigure(1, weight=1)
root.grid_colum­nconfigure(2, weight=1)
root.grid_row­configure(1, weight=1)
root.grid_row­configure(2, weight=1)

# Registrace fontu Calibri
register_cali­bri_font()

root.mainloop()

 
Odpovědět
1.10.2024 17:47
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:2.10.2024 14:17

Mne prijde treba divne to, ze ty databazova data nemas v jedne promene, v jednom poli, treba, ale, ze to mas roztahane po celem programu. Ze tam mas na kazdem radku tk.BooleanVar() atd... Pak ma cely program 10.000 radku misto 1000 + data, ktera mu predas z venci.
A take by bylo fajn, abys pro vlozeni kodu pouzil formatovaci znacky, tlacitko editoru </>, ktere ti tam vlozi znacku [ code ] [ /code ] (bez mezer). Jako da se to preformatovat online na webu, ale do toho se asi nikomu nebude chtit.
Takze, to jsou asi 2 zasadni veci, proc s tim asi nikomu nebude chtit zabyvat. Je to dlouhe a neni to zformatovane. Mozna zkus nejakeho programatora PY v okoli, aby se za to za penize podival.

Editováno 2.10.2024 14:18
 
Nahoru Odpovědět
2.10.2024 14:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.