72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
import tkinter as tk
|
|
from tkinter import ttk
|
|
|
|
|
|
class BasicUI:
|
|
"""旧版页面的兼容辅助类。
|
|
|
|
新界面主要使用 core.ui.components;保留这个类是为了兼容后续可能仍引用
|
|
add_input/add_combobox/add_button 的小工具页。
|
|
"""
|
|
|
|
def add_input(
|
|
self,
|
|
parent,
|
|
label_text,
|
|
row,
|
|
col=0,
|
|
inivar="",
|
|
label_width=8,
|
|
entry_width=20,
|
|
colspan=1,
|
|
sticky="w",
|
|
):
|
|
group_frame = ttk.Frame(parent)
|
|
group_frame.grid(row=row, column=col, columnspan=colspan, sticky=sticky, padx=5, pady=3)
|
|
|
|
label = ttk.Label(group_frame, text=f"{label_text}:", width=label_width, anchor="w")
|
|
label.grid(row=0, column=0, sticky="w", padx=(0, 5))
|
|
|
|
var = tk.StringVar(value=inivar)
|
|
entry = ttk.Entry(group_frame, textvariable=var, width=entry_width)
|
|
entry.grid(row=0, column=1, sticky="w")
|
|
|
|
return {"frame": group_frame, "label": label, "entry": entry, "var": var}
|
|
|
|
def add_combobox(
|
|
self,
|
|
parent,
|
|
label_text,
|
|
row,
|
|
col=0,
|
|
listbox=None,
|
|
inivar=0,
|
|
width=17,
|
|
colspan=1,
|
|
sticky="w",
|
|
label_width=8,
|
|
state="readonly",
|
|
):
|
|
values = listbox or []
|
|
frame = ttk.Frame(parent)
|
|
frame.grid(row=row, column=col, columnspan=colspan, sticky=sticky, padx=5, pady=3)
|
|
|
|
label = ttk.Label(frame, text=f"{label_text}:", width=label_width, anchor="w")
|
|
label.grid(row=0, column=0, sticky="w", padx=(0, 5))
|
|
|
|
var = tk.StringVar()
|
|
combobox = ttk.Combobox(frame, textvariable=var, values=values, width=width, state=state)
|
|
combobox.grid(row=0, column=1, sticky="w")
|
|
if values and inivar >= 0:
|
|
var.set(values[inivar])
|
|
|
|
return {"frame": frame, "label": label, "combobox": combobox, "var": var}
|
|
|
|
def add_button(self, parent, button_text, row, col=0, command=None, width=5, colspan=1, sticky="w"):
|
|
group_frame = ttk.Frame(parent)
|
|
group_frame.grid(row=row, column=col, columnspan=colspan, sticky=sticky, padx=5, pady=3)
|
|
|
|
btn = ttk.Button(group_frame, text=button_text, command=command, width=width)
|
|
btn.grid(row=0, column=0, sticky="w")
|
|
return {"frame": group_frame, "btn": btn}
|