Я немного новичок в python классах, и я пока не знаю, как с ними хорошо справиться, и я обещаю, что провел некоторое исследование, чтобы решить эту проблему, но все еще не могу понять, как это сделать. Итак, вот и все:
Я пытаюсь использовать python классы для определения виджетов tkinter, чтобы я мог их реализовать довольно быстро. Все хорошо работало с кнопками и надписями, но я не могу получить это с записями. Я покажу вам, как я кодировал кнопки и метки, чтобы проиллюстрировать, что я пытаюсь сделать с записями (и, может быть, вы, ребята, можете помочь мне улучшить это при необходимости?).
class buttonStatic:
def __init__(self, parent, row, col,rowspan, text, font, bg, fg, bd,width=None, function=None,sticky=None):
button = tk.Button(parent, text=text, font=(font), bg=bg, fg=fg,bd=bd, width=width, command=function)
button.grid(row=row, column=col,rowspan=rowspan, padx=padx, pady=pady, sticky=sticky)
class buttonDinamic:
def __init__(self, parent, row, col,rowspan, textVar, font, bg, fg,bd,width=None, function=None,sticky=None):
variable = tk.StringVar()
variable.set(textVar)
button = tk.Button(parent, textvariable=variable, font=(font), bg=bg, fg=fg,bd=bd, width=width, command=function)
button.grid(row=row, column=col,rowspan=rowspan, padx=padx, pady=pady, sticky=sticky)
class labelStatic:
def __init__(self, parent, row, col, text, font, bg, fg, sticky=None):
label = tk.Label(parent, text=text, font=(font), bg=bg, fg=fg)
label.grid(row=row, column=col, padx=padx, pady=pady, sticky=sticky)
class labelDinamic:
def __init__(self, parent, row, col, textVar, font, bg, fg, sticky=None):
variable = tk.StringVar()
variable.set(textVar)
label = tk.Label(parent, textvariable=variable, font=(font), bg=bg, fg=fg)
label.grid(row=row, column=col, padx=padx, pady=pady, sticky=sticky)
Теперь, это то, что я кодировал для записей, следуя ответу в this (я добавил несколько лямбда-функций, чтобы сделать его «многоразовым»)
def focusIn(entry):
entry.delete(0,'end')
entry.config(fg=fColor_1)
return
def focusOut(entry):
entry.delete(0,'end')
entry.config(fg=fColor_3)
entry.insert(0,'Presupuesto')
return
def enter(entry):
x = entry.get()
print(entry.get())
focusOut(entry)
return
testEntry = tk.Entry(module,bg=bgColor_1,width = 30, fg='grey')
testEntry.grid(row=0,column = 1)
testEntry.insert(0,'Presupuesto')
testEntry.bind('<FocusIn>',lambda x: focusIn(testEntry))
testEntry.bind('<FocusOut>',lambda x: focusIn(testEntry))
testEntry.bind('<Return>',lambda x: enter(testEntry))
Вот мой фактический вопрос
Как создать класс и как использовать методы .get()
и .set()
, когда виджет преобразован в класс?
Как я не очень опытный в python классах (и особенно комбинируя их с tkinter), я даже не знаю, возможно ли то, что я спрашиваю! pd: Извините, если мой английский sh не очень хорош, это не мой родной язык