0

ボタンが押されたすべての2つの文字列を交互に切り替えたいと思います。たとえば、最初にボタンのラベルを「こんにちは」に変更したい場合、2回目にボタンを押すと「さようなら」と表示され、3回目は「こんにちは」に戻ります。最良の解決策はカウンターを使用することでしょうか? またはバインディング?(実際にどのように機能するかはわかりません)

4

1 に答える 1

1

私はこれに使用itertools.cycleします:

>>> import itertools
>>> texts = itertools.cycle(['Hi', 'Bye'])
>>> print next(texts)
Hi
>>> print next(texts)
Bye
>>> print next(texts)
Hi
>>> print next(texts)
Bye

編集

簡単な例:

import itertools
from Tkinter import *

class App:

    def __init__(self, master):

        frame = Frame(master)
        frame.pack()

        self.texts = itertools.cycle(['Hi', 'Bye'])

        self.var = StringVar()
        self.label = Label(frame, textvariable=self.var)
        self.label.pack(side=LEFT)

        self.button = Button(frame, text="Set Text", command=self.change_text)
        self.button.pack(side=LEFT)


    def change_text(self):
        self.var.set(next(self.texts))

root = Tk()
app = App(root)
root.mainloop()
于 2012-10-27T20:07:19.673 に答える