微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用工厂方法的输入小部件工厂类

我有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 举报,一经查实,本站将立刻删除。