[Python] [Tkinter]フラグを追加して、ラベルの前景をループで赤に変えますか?

ダレン

ですから、私が持っているこのジレンマにどのように取り組むかを理解できないようです。基本的に5つのラベルを印刷する簡単なスクリプトがあり、それぞれが2秒の休止で次々に印刷されます。

私がやりたかったのは、基本的に現在実行中のラベルを「赤」で強調表示し、2番目のラベルが印刷されると、1番目のラベルの前景が「黒」に戻るというようになります。したがって、基本的に最後のラベルは赤で、前のラベルは黒である必要があります。

基本的に、これの目的は、Android TVをテストするためにPythonで記述された自動化スクリプトを用意し、そのための簡単なGUIを作成することです。実行中の現在のテストケースを強調したいと思います。関数(テストケース)を実行した後、黒に変えてほしい。

以下のコード:

from tkinter import *
from tkinter import ttk
import tkinter.font as tkFont
import time

class SampleTkinterLoop:

    def __init__(self, master):
        # Initialize master as the Tk() instance
        self.master = master
        master.title("Loop Tests")
        master.geometry("768x480")

        # Create main frame as app
        self.app = ttk.Frame(root)
        self.app.pack(fill="both", expand=True)

        # Create a custom font
        self.mainFont = tkFont.Font(family="Helvetica", size=12)

        # Initialize flags for BG and FG change
        self.bgCounter = 0

    def test1(self):
        x = True # set fgChooser to True to make foreground red
        ttk.Label(
            self.app, text=f'Test case 1',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont).pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)

    def test2(self):
        x = True # set fgChooser to True to make foreground red
        ttk.Label(
            self.app, text=f'Test case 2',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont).pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)

    def test3(self):
        x = True # set fgChooser to True to make foreground red
        ttk.Label(
            self.app, text=f'Test case 3',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont).pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)

    def test4(self):
        x = True # set fgChooser to True to make foreground red
        ttk.Label(
            self.app, text=f'Test case 4',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont).pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)

    def test5(self):
        x = True # set fgChooser to True to make foreground red
        ttk.Label(
            self.app, text=f'Test case 5',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont).pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)

    def repeatIt(self):
        for i in range(0, 5):
            # self.anotherLoop()
            self.test1()
            self.test2()
            self.test3()
            self.test4()
            self.test5()
            self.reset()
            root.update()
            time.sleep(1)
            print(i)

    def bgChooser(self):
        # make label background alternate to white and gray for easy reading
        if (self.bgCounter % 2) == 0:
            return str("#fff")
        return str("#ccc")

    def fgChooser(self, isActive=False):
        # this is where the  problem is, can't seem to find a way to make a flag for foreground color of label
        if isActive:
            return str("#a5120d")
        return str("#000")

    def reset(self):
        '''reset the UI'''
        for child in self.app.winfo_children():
            child.destroy()

root = Tk()
LoopTest = SampleTkinterLoop(root)
LoopTest.repeatIt()
root.mainloop()

上記のコードはすべてのラベルを赤にしますが、前のラベルは黒になりません。

ブラックサンダー

ttkそのタスクに使用する必要はありません後でラベルの色を変更できるからです。
例:
インポート:

from tkinter import *  #<-- so you don't have to edit your full code
import tkinter as ttk     #<---
import tkinter.font as tkFont
import time

次のtest1ように関数を編集できます

x = True 
xyz = ttk.Label(   #assign to a variable rather than packing <---
    self.app, text=f'Test case 1',
    background=self.bgChooser(),
    foreground=self.fgChooser(x),
    font=self.mainFont)
xyz.pack()   #pack later  <---
self.bgCounter += 1
x = False 
root.update()
time.sleep(2)
xyz.config(fg="black")   #change color after 2 sec  <---

コードの例を次に示します。

from tkinter import *
import tkinter as ttk
import tkinter.font as tkFont
import time

class SampleTkinterLoop:

    def __init__(self, master):
        # Initialize master as the Tk() instance
        self.master = master
        master.title("Loop Tests")
        master.geometry("768x480")

        # Create main frame as app
        self.app = ttk.Frame(root)
        self.app.pack(fill="both", expand=True)

        # Create a custom font
        self.mainFont = tkFont.Font(family="Helvetica", size=12)

        # Initialize flags for BG and FG change
        self.bgCounter = 0

    def test1(self):
        x = True # set fgChooser to True to make foreground red
        xyz = ttk.Label(
            self.app, text=f'Test case 1',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont)
        xyz.pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)
        xyz.config(fg="black")

    def test2(self):
        x = True # set fgChooser to True to make foreground red
        xyz = ttk.Label(
            self.app, text=f'Test case 2',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont)
        xyz.pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)
        xyz.config(fg="black")

    def test3(self):
        x = True # set fgChooser to True to make foreground red
        xyz = ttk.Label(
            self.app, text=f'Test case 3',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont)
        xyz.pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)
        xyz.config(fg="black")

    def test4(self):
        x = True # set fgChooser to True to make foreground red
        xyz = ttk.Label(
            self.app, text=f'Test case 4',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont)
        xyz.pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)
        xyz.config(fg="black")

    def test5(self):
        x = True # set fgChooser to True to make foreground red
        xyz = ttk.Label(
            self.app, text=f'Test case 5',
            background=self.bgChooser(),
            foreground=self.fgChooser(x),
            font=self.mainFont)
        xyz.pack()
        self.bgCounter += 1
        x = False # set it back to false to make foreround black
        root.update()  # allow window to catch up
        time.sleep(2)
        xyz.config(fg="black")

    def repeatIt(self):
        for i in range(0, 5):
            # self.anotherLoop()
            self.test1()
            self.test2()
            self.test3()
            self.test4()
            self.test5()
            self.reset()
            root.update()
            time.sleep(1)
            print(i)

    def bgChooser(self):
        # make label background alternate to white and gray for easy reading
        if (self.bgCounter % 2) == 0:
            return str("#fff")
        return str("#ccc")

    def fgChooser(self, isActive=False):
        # this is where the  problem is, can't seem to find a way to make a flag for foreground color of label
        if isActive:
            return str("#a5120d")
        return str("#000")

    def reset(self):
        '''reset the UI'''
        for child in self.app.winfo_children():
            child.destroy()

root = Tk()
LoopTest = SampleTkinterLoop(root)
LoopTest.repeatIt()
root.mainloop()

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonでmatplotlibとseabornを使用してグループ棒グラフに4番目の棒を追加するにはどうすればよいですか?

分類Dev

Tkinter pythonのラベルをどのように置き換えますか?

分類Dev

Python 3-グリッドに数値でラベルを付けて境界線を追加しますか?

分類Dev

Pythonを使用してプログラムでWindowsの.docxの.docファイルを変換します

分類Dev

Pythonでグループに基づいてラベルの色を強調表示/変更するにはどうすればよいですか?

分類Dev

python 3でループをラムダに変換して、フィルターメソッドを使用せずにtrueまたはfalseを返しますか?

分類Dev

Pythonで個々のハンドラーのログレベルを動的に変更できますか?

分類Dev

Pythonですべてのクラスを1つのファイルに入れるのではなく、モジュールをインポートしてクラスをグループ化することに欠点はありますか?

分類Dev

線上の年の折れ線グラフでグループ化された時系列にラベルを追加する-Matplotlib、Python

分類Dev

ログインのように作成し、Pythonで「データベースとして機能する」txtファイルを使用してプログラムを登録する初心者プロジェクトを試しています

分類Dev

Pythonのezdxfまたはdxfwriteを介してタグ付けまたはラベル(CADファイルに同じもの)を追加するにはどうすればよいですか?

分類Dev

プログラムの変数を使用してファイルの名前を変更します-Python

分類Dev

python tkinterを使用して、選択した画像をラベルにアップロードするにはどうすればよいですか?

分類Dev

plotly(python)で目盛りラベルとグラフの間にスペースを追加するにはどうすればよいですか?

分類Dev

plotly(python)で目盛りラベルとグラフの間にスペースを追加するにはどうすればよいですか?

分類Dev

python zipfileコマンドを使用して、クラスファイルをjar内のサブフォルダーに置き換え/追加します

分類Dev

python / tkinterは、ボタンを押すと、単語の個々の文字をラベルに追加します

分類Dev

Python 3.4でローグライクゲームを開発し、レベルをランダムに生成するためのヘルプを探します

分類Dev

PythonのPILを使用してグレースケール画像をカラフルな画像に変換するのに適したカラーマップはありますか?

分類Dev

Pythonはプログラムでコンソールのフォントサイズを変更します

分類Dev

Python tkinterは、forループで作成された個々のボタンパラメーターを変更します

分類Dev

PythonとPlotlyオフライン:(空の)グラフを作成し、forループでトレースを追加します

分類Dev

Pythonで棒グラフのラベルをアルファベット順にプロットする方法は?

分類Dev

Tkinterを使用してPythonでさまざまな時間にさまざまなラジオボタンのグループを表示するにはどうすればよいですか?

分類Dev

Pythonプログラミングを使用してcsvファイルで2つの日付から2回までのレコードを検索する

分類Dev

Python 3を使用してTkinterでラベルを中央揃えにするにはどうすればよいですか?

分類Dev

PythonでnetworkXを使用して、ノードラベルを絵文字に置き換えます

分類Dev

Pythonで複数の画像ファイル名の詳細を抽出し、データセットのラベルとして追加します

分類Dev

Python: SQlite3 データベースのデータを使用して Tkinter で棒グラフを作成する

Related 関連記事

  1. 1

    Pythonでmatplotlibとseabornを使用してグループ棒グラフに4番目の棒を追加するにはどうすればよいですか?

  2. 2

    Tkinter pythonのラベルをどのように置き換えますか?

  3. 3

    Python 3-グリッドに数値でラベルを付けて境界線を追加しますか?

  4. 4

    Pythonを使用してプログラムでWindowsの.docxの.docファイルを変換します

  5. 5

    Pythonでグループに基づいてラベルの色を強調表示/変更するにはどうすればよいですか?

  6. 6

    python 3でループをラムダに変換して、フィルターメソッドを使用せずにtrueまたはfalseを返しますか?

  7. 7

    Pythonで個々のハンドラーのログレベルを動的に変更できますか?

  8. 8

    Pythonですべてのクラスを1つのファイルに入れるのではなく、モジュールをインポートしてクラスをグループ化することに欠点はありますか?

  9. 9

    線上の年の折れ線グラフでグループ化された時系列にラベルを追加する-Matplotlib、Python

  10. 10

    ログインのように作成し、Pythonで「データベースとして機能する」txtファイルを使用してプログラムを登録する初心者プロジェクトを試しています

  11. 11

    Pythonのezdxfまたはdxfwriteを介してタグ付けまたはラベル(CADファイルに同じもの)を追加するにはどうすればよいですか?

  12. 12

    プログラムの変数を使用してファイルの名前を変更します-Python

  13. 13

    python tkinterを使用して、選択した画像をラベルにアップロードするにはどうすればよいですか?

  14. 14

    plotly(python)で目盛りラベルとグラフの間にスペースを追加するにはどうすればよいですか?

  15. 15

    plotly(python)で目盛りラベルとグラフの間にスペースを追加するにはどうすればよいですか?

  16. 16

    python zipfileコマンドを使用して、クラスファイルをjar内のサブフォルダーに置き換え/追加します

  17. 17

    python / tkinterは、ボタンを押すと、単語の個々の文字をラベルに追加します

  18. 18

    Python 3.4でローグライクゲームを開発し、レベルをランダムに生成するためのヘルプを探します

  19. 19

    PythonのPILを使用してグレースケール画像をカラフルな画像に変換するのに適したカラーマップはありますか?

  20. 20

    Pythonはプログラムでコンソールのフォントサイズを変更します

  21. 21

    Python tkinterは、forループで作成された個々のボタンパラメーターを変更します

  22. 22

    PythonとPlotlyオフライン:(空の)グラフを作成し、forループでトレースを追加します

  23. 23

    Pythonで棒グラフのラベルをアルファベット順にプロットする方法は?

  24. 24

    Tkinterを使用してPythonでさまざまな時間にさまざまなラジオボタンのグループを表示するにはどうすればよいですか?

  25. 25

    Pythonプログラミングを使用してcsvファイルで2つの日付から2回までのレコードを検索する

  26. 26

    Python 3を使用してTkinterでラベルを中央揃えにするにはどうすればよいですか?

  27. 27

    PythonでnetworkXを使用して、ノードラベルを絵文字に置き換えます

  28. 28

    Pythonで複数の画像ファイル名の詳細を抽出し、データセットのラベルとして追加します

  29. 29

    Python: SQlite3 データベースのデータを使用して Tkinter で棒グラフを作成する

ホットタグ

アーカイブ