-1

我正在尝试在一个 GUI 中创建两个自定义比例。创建自定义比例的最简单方法是使用样式;但问题是,当第二次调用此函数以创建第二个比例时,style.element_create() 会生成错误,因为它将“custom.Horizo​​ntal.Scale.trough”视为重复项。

def create_style():
    global startup
    if startup=="no":
        img_trough = PhotoImage(file="bar.gif")
        img_slider = PhotoImage(file="slider.gif")
    if startup=="yes":
        img_trough = PhotoImage(file="bar_small.gif")
        img_slider = PhotoImage(file="slider_small.gif")

   # create scale elements
   style.element_create('custom.Horizontal.Scale.trough', 'image', img_trough)
   style.element_create('custom.Horizontal.Scale.slider', 'image', img_slider)
   # create custom layout
   style.layout('custom.Horizontal.TScale',[('custom.Horizontal.Scale.trough', {'sticky': 'ns'}),
            ('custom.Horizontal.Scale.slider', {'side': 'left', 'sticky': '','children': [('custom.Horizontal.Scale.label', {'sticky': ''})]})])
4

1 回答 1

0

我设法解决了这个问题。留给任何可能需要它的人作记录。问题的根源在于“custom.Horizo​​ntal.Scale.trough”不能使用两次。将其修改为“custom.Horizo​​ntal.Scale.trough2”或“custom.Horizo​​ntal.Scale2.trough”不起作用。但是,修改字符串“custom”可以工作。每次调用此函数时都可以使用不同的字符串,而不会影响功能。这就是我所做的:

i=1
def create_style():
    global img_trough
    global img_slider
    global startup
    global i
    if startup=="no":
        img_trough = PhotoImage(file="bar.gif")
        img_slider = PhotoImage(file="slider.gif")

    if startup=="yes":
        img_trough = PhotoImage(file="bar_small.gif")
        img_slider = PhotoImage(file="slider_small.gif")


    print("called", i, "th time")
    i=i+1
    # create scale elements
    string_trough=str(i)+'.custom.Horizontal.Scale.trough'
    string_slider=str(i)+'.custom.Horizontal.Scale.slider'
    style.element_create(string_trough, 'image', img_trough)
    style.element_create(string_slider, 'image', img_slider)
    # create custom layout
    style.layout('custom.Horizontal.TScale',[(string_trough, {'sticky': 'ns'}),(string_slider, {'side': 'left', 'sticky': '','children': [('custom.Horizontal.Scale.label', {'sticky': ''})]})])
于 2020-04-14T04:14:17.957 回答