0

で作成しようとしてLabelいますttk

単語のポイントが表示されるウィジェットを作成することを目指しています。エントリを作成しましたが、単語の価値があるポイントを表示したいと思います。

これが私のコードです:

これは、次を作成する関数Labelです。

def create_variabletext_label2(root, col, row, val):
    val1 = IntVar()
    val1.set(m.comptabilisation_points(val.get()))

    # Here val is the value of the word input onto the entry widget
    # and m.comptabilisation_point() is a function that counts the
    # points of the word.
    label = Label(root, textvariable=val1)
    label.grid(column=col, row=row)
    return val1, label

エントリを作成する関数は次のとおりです。

def create_entry_string(root, width, col, row, columnspan, rowspan):
    val=StringVar()
    entry=ttk.Entry(root, width=width, textvariable=val)
    entry.grid(column=col, row=row, columnspan=columnspan, rowspan=rowspan)
    return val, entry

次に、これらの関数を呼び出します。

val_entry_mot, entry_mot = create_entry_string(root, 15, 1, 1, 1, 1)
val_points, label_points = create_variabletext_label2(root, 1, 2, val_entry_mot)

私の問題は、Labelが表示され続けること0です。ラベルは、単語のポイントに従って変更されません。

ご協力いただきありがとうございます。MFF

曖昧でごめんなさい。

追加情報:

スクラブルゲームを作ろうとしています。実際、私の問題は、単語が価値のあるポイントを表示する方法がわからないことです。エントリの値が変わっても、ラベルは変わりません。

val_entry_mot最初は の値は変わらないと思っていました。そこで、関数を次のように変更して、入力された単語のみを表示しようとしましたcreate_variable_text2()

def create_variabletext_label2(root, col, row, val):
        label = Label(root, textvariable=val)
        label.grid(column=col, row=row)
        return val, label

出来た。エントリ内の単語を変更するたびに、ラベルにその単語が表示されていました。

次に、単語のポイントをカウントするはずのコードに欠陥があると考えました。ここにあります:

def comptabilisation_points(word):
    dico_values=values_scrabble()
    points=0
    for i in word.upper():
        points+=dico_values[i]
    return points

values_scrabble()ファイルを開いて辞書に変換する関数です ={'A': 1, 'C': 3, 'B': 3, 'E': 1, 'D': 2, 'G': 2, 'F': 4, 'I': 1, 'H': 4, 'K': 10, 'J': 8, 'M': 2, 'L': 1, 'O': 1, 'N': 1, 'Q': 8, 'P': 3, 'S': 1, 'R': 1, 'U': 1, 'T': 1, 'W': 10, 'V': 4, 'Y': 10, 'X': 10, 'Z': 10}

そして、単語のポイントを数えようとすると、実際に機能しました。だから私の問題はここにないと思います。

これがゲームのスクリーンショットです。それはフランス語ですが、あなたが知っておくべきことは、最初Entryの一番上が単語を入力する場所であり、そのすぐ下が単語のポイントを表示することになっているということです.

ゲームのスクリーンショット

私がはっきりしていることを願っています。ありがとうございました。

MFF

4

1 に答える 1

0

val_entry_motが設定されておらず、問題を説明する戻り値'':

In [1]: val_entry_mot.get()
Out[1]: ''

したがって、val1.set()適切に機能することはできません。

何らかの値に直接設定すると、コードが機能します。たとえば、次のようになります。

val1.set(123) # This properly renders "123" as Label text
于 2012-04-16T12:10:59.040 に答える