使用工厂方法的输入小部件工厂类

问题描述

我有Burkhard Meier的Button工厂的修改版本,需要使用文本字段工厂进行扩展。我需要遵循以下结构:

预期输出

enter image description here

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忍者可以帮助我了解如何执行上述操作以及如何:

  1. 是否创建名为TextBase()的抽象产品,该产品将具有属性textvariablebackground

  2. 声明一个getTextConfig(...)方法

  3. 创建三个名为text_1 / 2 / 3 /的具体文本产品,这些产品将被分配textvariable值'红色类型/蓝色类型/绿色类型'如下图所示。

  4. 使用createTextFields()方法扩展OOP类,以创建工厂对象。

  5. 我也收到了下面的代码,但是我不知道如何实现它来解决上面的问题。

     #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,foreground="white")   
     action.grid(column=1,row=1) 
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)