0

タイム テーブルを出力する tkinter プログラムを作成しようとしています。これを行うには、テキスト ウィジェットを編集して回答を画面に表示する必要があります。すべての合計はスペースなしで隣り合って表示されます。それらの間にスペースを追加すると、空白の周りに中括弧が表示されます。これらの中括弧を取り除くにはどうすればよいですか?

PSここに私のコードがあります:

#############
# Times Tables
#############

# Imported Libraries
from tkinter import *

# Functions
def function ():
    whichtable = int(tableentry.get())
    howfar = int(howfarentry.get())
    a = 1
    answer.delete("1.0",END)
    while a <= howfar:
        text = (whichtable, "x", howfar, "=", howfar*whichtable, ", ")
        answer.insert("1.0", text)
        howfar = howfar - 1

# Window
root = Tk ()

# Title Label
title = Label (root, text="Welcome to TimesTables.py", font="Ubuntu")
title.pack ()

# Which Table Label
tablelabel = Label (root, text="Which Times Table would you like to use?")
tablelabel.pack (anchor="w")

# Which Table Entry
tableentry = Entry (root, textvariable=StringVar)
tableentry.pack ()


# How Far Label
howfarlabel = Label (root, text="How far would you like to go in that times table?")
howfarlabel.pack (anchor="w")

# How Far Entry
howfarentry = Entry (root, textvariable=StringVar)
howfarentry.pack ()

# Go Button
go = Button (root, text="Go", bg="green", width="40", command=function)
go.pack ()

# Answer Text
answer = Text (root, bg="cyan", height="3", width="32", font="Ubuntu")
answer.pack ()

# Loop
root.mainloop ()
4

3 に答える 3

1

各方程式を独自の行に取得するには、テーブル全体を 1 つの文字列として作成することをお勧めします。

table = ',\n'.join(['{w} x {h} = {a}'.format(w=whichtable, h=h, a=whichtable*h)
                   for h in range(howfar,0,-1)])
answer.insert("1.0", table)

また、fillexpandパラメータをanswer.packに追加すると、より多くのテーブルを表示できるようになります。

answer.pack(fill="y", expand=True)
于 2013-04-20T11:55:54.667 に答える
0

15 行目で、"text" を int と文字列が混在するタプルに設定します。ウィジェットは文字列を予期しており、Python はそれを奇妙に変換します。その行を変更して、文字列を自分で作成します。

text = " ".join((str(whichtable), "x", str(howfar), "=", str(howfar*whichtable), ", "))
于 2013-04-20T11:43:51.750 に答える