2

私は、年間気温用の小さな Python/Tkinter プログラムを書いています。

ほとんどすべてをテキスト プログラムとして動作させることができますが、それを GUI に実装したいと考えています。

プログラムはファイルを開き、csvそれをリストに読み込み、平均を計算し、最小温度と最大温度を計算します。その後、アプリケーションを閉じると、概要が新しいテキスト ファイルに保存されます。

デフォルトの起動画面にすべての年を表示したいと考えています。ボタンをクリックすると、その年のデータが表示されます。

これが私が望むものです:

ここに画像の説明を入力

5つのボタンとそれぞれのアウトプットだけの非常にシンプルなレイアウト。

トップのボタンを次のように構成できます。

class App:

    def __init__(self, master):

        frame = Frame(master)
        frame.pack()

        self.hi_there = Button(frame, text="All Years", command=self.All)
        self.hi_there.pack(side=LEFT)

        self.hi_there = Button(frame, text="2011", command=self.Y1)
        self.hi_there.pack(side=LEFT)

        self.hi_there = Button(frame, text="2012", command=self.Y2)
        self.hi_there.pack(side=LEFT)

        self.hi_there = Button(frame, text="2013", command=self.Y3)
        self.hi_there.pack(side=LEFT)

        self.hi_there = Button(frame, text="Save & Exit", command=self.Exit)
        self.hi_there.pack(side=LEFT)

タイトルや表など、他の要素をどうするかわかりません。

構造/フレームワークができたら、フィールドに入力できると思います。この方法でよりよく学ぶことができます。

4

3 に答える 3

1

これは Tkinter に関する私のお気に入りのリソースです: http://effbot.org/tkinterbook/

タイトルはラベルにすることができます: http://effbot.org/tkinterbook/label.htm

w = Label(master, text="Hello, world!")
w.grid(column=1,row=1)

それ以外の場合は、次のエントリ ウィジェットを作成します。

textBox = Text(self, height=1,width=1)
textBox.grid(sticky=E,column=1,row=1)

次に、次のようにデータを挿入します。

self.textBox.insert('end',yourText)
于 2012-11-08T21:55:54.107 に答える
0

検討したいオプションは、tkinterの.pack()関数を使用する代わりに、関数を使用する.grid()ことです。これにより、オブジェクトを希望どおりに動的に配置でき、実行中の作業(グリッドの作成)に最適です。

これを行うと、csvファイル情報を取得し、テキストを変数として保存できます(たとえばcsvText)。次に、以下を使用して変数をラベルとして出力します。

dataText = Tkinter.Label(root,text=csvText)
dataText.grid(row=2,column=0)

情報ごとにそれを行います。上部のタイトルは、columnspan属性を使用することを除いて、同じ方法でグリッドにパックされます。

title = Tkinter.Label(root,text="TITLE")
title.grid(row=1,column=0,columnspan=4)

ボタンは同じですが、を使用する代わりに、次のようにしてボタン.pack(side=LEFT)をパックします。

self.hi_there = Button(frame, text="All Years", command=self.All)
self.hi_there.grid(row=0,column=0)

self.hi_there = Button(frame, text="2011", command=self.Y1)
self.hi_there.grid(row=0,column=1)

self.hi_there = Button(frame, text="2012", command=self.Y2)
self.hi_there.grid(row=0,column=2)

self.hi_there = Button(frame, text="2013", command=self.Y3)
self.hi_there.grid(row=0,column=3)

self.hi_there = Button(frame, text="Save & Exit", command=self.Exit)
self.hi_there.grid(row=0,column=4)

ボタン関数はすべて、新しいcsv情報を見つけて同じcsvText変数に格納し、それらをラベルを更新する更新関数に渡す必要があります。画面に何かを再描画するとき、すべてが消去されて最初から開始されるわけではないことに注意してください。再描画するときは、すべてのボタンとタイトルを再描画するのではなく、すべてのラベルを再描画するだけです。これにより、コード行が節約され、少し最適化されます。

于 2012-11-09T22:21:01.453 に答える