tkinterで複数のボタンを1つのテキストウィジェットにリンクするにはどうすればよいですか?

アレック

私はtkinterを学ぼうとしていて、3つのボタンと1つのテキストウィジェットを備えたウィンドウがある簡単なじゃんけんゲームを書きたかったのです。

いずれかのボタンを押してメッセージをテキストフィールドに表示し、別のボタンをクリックしたり、テキストフィールドをクリックして、2番目のボタンに関連付けられた新しいメッセージをクリアして表示したりできるようにしたいと思います。

私が見たチュートリアルから、ボタンコマンドパラメータの引数としてテキストウィジェットを格納する関数を渡すことができることを知っています。テキストフィールドを使用して、ボタンごとに1つずつ(一度に1つずつ)3つの関数を作成できることを知っています。しかし、それはおそらく正しい方法ではありません。これが私がこれまでに持っているものです:

import tkinter as tk

root = tk.Tk()
root.title("Rock Paper Scissors")
root.geometry("420x200")

def Rock():
    rockText = "Paper!"
    return rockText

def Paper():
    paperText = "Scissors!"
    return paperText

def Scissors():
    scissorsText = "Rock!"
    return scissorsText

def display():

    textDisplay = tk.Text(master = root, height = 10, width = 50)
    textDisplay.grid(row = 1, columnspan = 5)
    textDisplay.insert(tk.END, Rock())

buttonRock = tk.Button(text = "Rock", command = display).grid(row = 0, column = 1, padx = 10)
buttonPaper = tk.Button(text = "Paper").grid(row = 0, column = 2, padx = 10)
buttonScissors = tk.Button(text = "Scissors").grid(row = 0, column = 3, padx = 10)

root.mainloop()

どんな助けでもありがたいです。

編集:2番目の考え-ゲームをこのように動作させることを試みることによって、私はこれを自分自身のために複雑にしていると想像できます。ランダムモジュールを使用すると、リストを使用してコンピューターを選択するための1つの関数を使用せずに、ランダムピックをパラメーターに保存してから、値を表示関数に返すことができます。

Number_42O

したがって、これが正しければ、ボタンをクリックしてテキストウィジェットのテキストを変更するだけです。そのためには、2つの簡単で非常によく似たオプションがあります。まず、あなたが行ったように3つの関数を定義し、それらにテキストを直接変更させることです。2番目のオプションは、与えられた内容に従ってテキストを変更する1つの関数を作成することです。2番目のケースでは、これを使用する必要があることに注意してください。これは、lambda小規模なプロジェクトでは非常にうまく機能しますが、プログラムが大きくなるとプログラムの効率が低下します。

最初のオプション:

import tkinter as tk

class App:
    def __init__(self):
        root=tk.Tk()
        root.title("Rock Paper Scissors")
        root.geometry("420x200")
        self.text=Text(root)
        self.text.grid(row=1,columnspan=5)
        tk.Button(root,text="Rock",command=self.Rock).grid(row=0,column=1,padx=10)
        tk.Button(root,text="Paper",command=self.Paper).grid(row=0,column=2)
        tk.Button(root,text="Scissors",command=self.Scissors).grid(row=0,column=3,padx=10)
        root.mainloop()

    def Rock(self):
        text="Paper!"
        self.text.delete(0,END) #delete everything from the Text
        self.text.insert(0,text) #put the text in

    def Paper(self):
        text="Scissors!"
        self.text.delete(0,END) #delete everything from the Text
        self.text.insert(0,text) #put the text in

    def Scissors(self):
        text="Rock!"
        self.text.delete(0,END) #delete everything from the Text
        self.text.insert(0,text) #put the text in

if __name__=='__main__':
    App()

2番目のオプション:

import tkinter as tk

class App:
    def __init__(self):
        root=tk.Tk()
        root.title("Rock Paper Scissors")
        root.geometry("420x200")
        self.text=Text(root)
        self.text.grid(row=1,columnspan=5)
        tk.Button(root,text="Rock",command=lambda: self.updateText('Paper!')).grid(row=0,column=1,padx=10)
        tk.Button(root,text="Paper",command=lambda: self.updateText('Scissors!')).grid(row=0,column=2)
        tk.Button(root,text="Scissors",command=lambda: self.updateText('Rock!')).grid(row=0,column=3,padx=10)
        root.mainloop()

    def updateText(self,text):
        self.text.delete(0,END) #delete everything from the Text
        self.text.insert(0,text) #put the text in

if __name__=='__main__':
    App()

ここで私からのいくつかの小さなサイドノート:

  1. あなたが使用している場合gridpackまたはplace右ウィジェット自体には、変数へのウィジェットが、リターンの割り当て文句を言わないgridpackまたはplaceある機能をNoneしたがって、最初にウィジェットを変数に割り当ててから、Text-widgetの場合と同じようにジオメトリマネージャーを使用します
  2. 後でtitle関数でタイトルを追加設定する必要はありません。className-argumentで設定できTkます。
  3. tkinterを使用している場合は、機能的に実行するのは問題ありませんが、クラスを使用してGUIを構築します。
  4. 新しいウィジェットを作成するときは、必ず最初にルートウィンドウの変数をウィジェットに渡すようにしてください。あなたがそれをしなければ彼らもそれを手に入れますが、それはより多くの不必要なバックグラウンド活動を必要とします、そしてあなたが複数のTkウィンドウを開いているならそれはあなたがそれを取りたいものではないかもしれないものを自動的に選択します。
  5. そして最後に1つの小さなヒント:すべてのtkinterウィジェットについてもっと知りたい場合は、http: //effbot.org/tkinterbook/tkinter-index.htm#class-referenceを試してください

お役に立てば幸いです。プログラミングを楽しんでください!

編集:ランダムモジュールであなたの編集を見たところです。この場合、2番目のオプションをお勧めします。ただ、削除textから-argumentをupdateTextして置き換えるlambda: self.updateText(...)self.updateText()それupdateText自体で、あなたが言及したリストのランダムなものを追加します。:D

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Tkinterのエントリウィジェットを使用せずに、押すとテキストウィジェットに製品の名前を表示するボタンを作成するにはどうすればよいですか?

分類Dev

MacOSのPythonTkinterチェックボタンウィジェット:テキストの色を設定するにはどうすればよいですか

分類Dev

Python tkinterのチェックボタンを使用して、エントリウィジェットのテキストを表示または非表示にするにはどうすればよいですか?

分類Dev

1つのプロジェクトで複数のインスタントアプリを作成するにはどうすればよいですか?

分類Dev

Tkinterのテキストウィジェットにファイルコンテンツを入力するにはどうすればよいですか?

分類Dev

Python tkinterでウィジェットを再スケーリングするときに、ウィジェットの残りの部分でテキストをスケーリングするにはどうすればよいですか?

分類Dev

Oracle Apex 5.1のリージョンに1つ以上のテキストボックスを動的に追加するにはどうすればよいですか?

分類Dev

1つのボタンで2つのテキストボックスの内容を次の画面に表示するにはどうすればよいですか?

分類Dev

IntelliJ IDEA IDEの1つのウィンドウで複数のプロジェクトを表示するにはどうすればよいですか?

分類Dev

1 つのインターフェースで複数のサブネットをリンクするにはどうすればよいですか?

分類Dev

Rマークダウンで画像の上に複数のテキストボックスを配置するにはどうすればよいですか

分類Dev

1つのボタンで複数のテキストボックスのテキストを同時にまたは順番に変更するにはどうすればよいですか?

分類Dev

2つのテキストボックスを1つのプロパティにバインドするにはどうすればよいですか?

分類Dev

チェックボックスウィジェットの幅の広いテキストを取得するにはどうすればよいですか?

分類Dev

剣道ツリーリストの1つのフィールドで複数のボタンを使用するにはどうすればよいですか?

分類Dev

ボタン内に複数のテキストを配置するにはどうすればよいですか?

分類Dev

Javaスクリプトで同じクラス名を持つそれぞれの特定のボタンから複数のテキストボックスの値を変更するにはどうすればよいですか?

分類Dev

ボタンをクリックするたびにタブのテキストに1を追加するにはどうすればよいですか?JavaFXで

分類Dev

ボタンをクリックするたびにタブのテキストに1を追加するにはどうすればよいですか?JavaFXで

分類Dev

テキストウィジェットを使用して複数行のテキストを設定するにはどうすればよいですか?

分類Dev

ラジオボタンでリンクされたテキストボックスの値を選択するにはどうすればよいですか?

分類Dev

Tkinterでエントリーボックスウィジェットを大量生産するにはどうすればよいですか?

分類Dev

テキストエディタでPyQtのフォントウィジェットを使用するにはどうすればよいですか?

分類Dev

PythonでTkinterテキストウィジェットの強調表示をリセットするにはどうすればよいですか?

分類Dev

ボタンがクリックされた瞬間にウィジェットの値を取得するにはどうすればよいですかFLTK

分類Dev

html / css / javascriptで複数のテキストボックスをより速くコーディングするにはどうすればよいですか?

分類Dev

tkinterのテキストウィジェットのテキストをプリンターに送信または印刷するにはどうすればよいですか?

分類Dev

クリックしたばかりのウィジェットまたはボタンのテキストにアクセスするにはどうすればよいですか?

分類Dev

tkinterのgrid()メソッドを使用して新しいウィジェットにボタンを作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    Tkinterのエントリウィジェットを使用せずに、押すとテキストウィジェットに製品の名前を表示するボタンを作成するにはどうすればよいですか?

  2. 2

    MacOSのPythonTkinterチェックボタンウィジェット:テキストの色を設定するにはどうすればよいですか

  3. 3

    Python tkinterのチェックボタンを使用して、エントリウィジェットのテキストを表示または非表示にするにはどうすればよいですか?

  4. 4

    1つのプロジェクトで複数のインスタントアプリを作成するにはどうすればよいですか?

  5. 5

    Tkinterのテキストウィジェットにファイルコンテンツを入力するにはどうすればよいですか?

  6. 6

    Python tkinterでウィジェットを再スケーリングするときに、ウィジェットの残りの部分でテキストをスケーリングするにはどうすればよいですか?

  7. 7

    Oracle Apex 5.1のリージョンに1つ以上のテキストボックスを動的に追加するにはどうすればよいですか?

  8. 8

    1つのボタンで2つのテキストボックスの内容を次の画面に表示するにはどうすればよいですか?

  9. 9

    IntelliJ IDEA IDEの1つのウィンドウで複数のプロジェクトを表示するにはどうすればよいですか?

  10. 10

    1 つのインターフェースで複数のサブネットをリンクするにはどうすればよいですか?

  11. 11

    Rマークダウンで画像の上に複数のテキストボックスを配置するにはどうすればよいですか

  12. 12

    1つのボタンで複数のテキストボックスのテキストを同時にまたは順番に変更するにはどうすればよいですか?

  13. 13

    2つのテキストボックスを1つのプロパティにバインドするにはどうすればよいですか?

  14. 14

    チェックボックスウィジェットの幅の広いテキストを取得するにはどうすればよいですか?

  15. 15

    剣道ツリーリストの1つのフィールドで複数のボタンを使用するにはどうすればよいですか?

  16. 16

    ボタン内に複数のテキストを配置するにはどうすればよいですか?

  17. 17

    Javaスクリプトで同じクラス名を持つそれぞれの特定のボタンから複数のテキストボックスの値を変更するにはどうすればよいですか?

  18. 18

    ボタンをクリックするたびにタブのテキストに1を追加するにはどうすればよいですか?JavaFXで

  19. 19

    ボタンをクリックするたびにタブのテキストに1を追加するにはどうすればよいですか?JavaFXで

  20. 20

    テキストウィジェットを使用して複数行のテキストを設定するにはどうすればよいですか?

  21. 21

    ラジオボタンでリンクされたテキストボックスの値を選択するにはどうすればよいですか?

  22. 22

    Tkinterでエントリーボックスウィジェットを大量生産するにはどうすればよいですか?

  23. 23

    テキストエディタでPyQtのフォントウィジェットを使用するにはどうすればよいですか?

  24. 24

    PythonでTkinterテキストウィジェットの強調表示をリセットするにはどうすればよいですか?

  25. 25

    ボタンがクリックされた瞬間にウィジェットの値を取得するにはどうすればよいですかFLTK

  26. 26

    html / css / javascriptで複数のテキストボックスをより速くコーディングするにはどうすればよいですか?

  27. 27

    tkinterのテキストウィジェットのテキストをプリンターに送信または印刷するにはどうすればよいですか?

  28. 28

    クリックしたばかりのウィジェットまたはボタンのテキストにアクセスするにはどうすればよいですか?

  29. 29

    tkinterのgrid()メソッドを使用して新しいウィジェットにボタンを作成するにはどうすればよいですか?

ホットタグ

アーカイブ