我有Burkhard Meier的Button工厂的修改版本,需要使用文本字段工厂进行扩展。我需要遵循以下结构:
预期输出:
import tkinter as tk
from tkinter import ttk
from tkinter import Menu
class ButtonFactory():
def createButton(self, type_):
return buttonTypes[type_]()
class ButtonBase():
relief ='flat'
foreground ='white'
def getButtonConfig(self):
return self.relief, self.foreground
class ButtonRidge(ButtonBase):
relief ='ridge'
foreground ='red'
class ButtonSunken(ButtonBase):
relief ='sunken'
foreground ='blue'
class ButtonGroove(ButtonBase):
relief ='groove'
foreground ='green'
buttonTypes = [ButtonRidge, ButtonSunken, ButtonGroove]
以下代码是否是上述代码的正确扩展,以使用名为generateText(..)
的fFactory方法创建具体的Entry小部件Factory类?我的指令说tkinter文本字段是Entry
小部件。
class TextFactory():
def generateText(self):
sv=tk.StringVar()
tx = factory.generateText(0).getTextConfig()[0]
sv.set(tx)
bg = factory.generateText(0).getTextConfig()[1]
action = tk.Entry(self.widgetFactory, textvariable=sv, background=bg, foreground="white")
action.grid(column=1, row=1)'''
那里有Python忍者可以帮助我了解如何执行上述操作以及如何:
是否创建名为TextBase()
的抽象产品,该产品将具有默认属性textvariable
和background
?
声明一个getTextConfig(...)
方法。
创建三个名为text_1
/ 2
/ 3
/的具体文本产品,这些产品将被分配textvariable
值'红色类型/蓝色类型/绿色类型'如下图所示。
使用createTextFields()
方法扩展OOP类,以创建工厂对象。
我也收到了下面的代码,但是我不知道如何实现它来解决上面的问题。
#Entry field 1
sv=tk.StringVar()
tx = factory.createText(0).getTextConfig()[0]
sv.set(tx)
bg = factory.createText(0).getTextConfig()[1]
action = tk.Entry(self.widgetFactory, textvariable=sv, background=bg, foreground="white")
action.grid(column=1, row=1)