【问题标题】:Change the button color with 'If'使用“If”更改按钮颜色
【发布时间】:2014-05-07 09:56:56
【问题描述】:

所以基本上,这是我的代码:

from Tkinter import *
import math # import module matematika
import tkFont
import time

class PersamaanKuadrat:
    def __init__(self, parent, title):
        self.parent = parent

        #self.parent.geometry("1280x560")
        self.parent.title(title)
        self.parent.protocol("WM_DELETE_WINDOW")

        self.aturKomponen()

        self.entP2.focus_set()

    def aturKomponen(self):

        self.customFont = tkFont.Font(family="Helvetica", size=18)

        mainframe = Frame(self.parent, bg="grey", bd=1)
        mainframe.pack(fill=BOTH, expand=YES)

        # Label Rumus
        Label(mainframe, text="PT PARKIR SEJAHTERA", bg="grey", font=self.customFont).place(relx=.055, rely=.1)
        Label(mainframe, text="HARAP SIMPAN BAIK-BAIK TIKET ANDA", fg="red", bg="grey", font=self.customFont).place(relx=.055, rely=.25)
        Label(mainframe, text="LANTAI 1", fg="red", bg="grey", font=self.customFont).place(relx=.55, rely=.35)
        Label(mainframe, text="LANTAI 2", fg="red", bg="grey", font=self.customFont).place(relx=.55, rely=.65)     
        # input data:
        Label(mainframe, text="1st input", bg="grey").place(relx=.05, rely=.35)
        self.entP5 = Entry(mainframe)
        self.entP5.place(relx=.15, rely=.35)

        Label(mainframe, text="2nd input", bg="grey").place(relx=.05, rely=.40)
        self.entP4 = Entry(mainframe)
        self.entP4.place(relx=.15, rely=.40)

        Label(mainframe, text="3rd input", bg="grey").place(relx=.05, rely=.45)
        self.entP3 = Entry(mainframe)
        self.entP3.place(relx=.15, rely=.45)

        Label(mainframe, text="4th input", bg="grey").place(relx=.05, rely=.50)
        self.entP2 = Entry(mainframe)
        self.entP2.place(relx=.15, rely=.50)


        Label(mainframe, text="5th input", bg="grey").place(relx=.05, rely=.55)
        self.entP1 = Entry(mainframe)
        self.entP1.place(relx=.15, rely=.55)

        Label(mainframe, text="6th input", bg="grey").place(relx=.05, rely=.60)
        self.entP0 = Entry(mainframe)
        self.entP0.place(relx=.15, rely=.60)


        self.btnCariAkar = Button(mainframe, text="ENTER!",
            command=self.onCariAkar)
        self.btnCariAkar.place(relx=.25, rely=.35)

        btn1= Button(mainframe, padx=30, pady=30, text="A1", bg="white")
        btn1.place(relx=.65, rely=.25)

        btn2 = Button(mainframe, padx=30, pady=30, text="A2", bg="white")
        btn2.place(relx=.80, rely=.25)

        btn3 = Button(mainframe, padx=30, pady=30, text="B1", bg="white")
        btn3.place(relx=.65, rely=.55)


        btn4 = Button(mainframe, padx=30, pady=30, text="B2", bg="white")
        btn4.place(relx=.80, rely=.55)

    def onCariAkar(self, event=None):


        A = float(self.entP5.get())
        B = float(self.entP4.get())
        C = float(self.entP3.get())
        D = float(self.entP2.get())
        E = float(self.entP1.get())
        F = float(self.entP0.get())
        disk = A+B+C+D+E+F






class JamDigital:
    """ Kelas Jam Digital"""

    def __init__(self, parent, title):
        self.parent = parent

        self.parent.title(title)


        #buat variabel String untuk teks jam
        self.teksJam = StringVar()

        self.aturKomponen()
        #melakukan looping untuk tampilan jam
        self.update()

    def aturKomponen(self):

        mainframe = Frame(self.parent, bg="grey", bd=1)
        mainframe.pack(fill=BOTH, expand=YES)

        #teks jam dibuat dengan komponen Label, yang bisa berubah
        #setiap waktu
        self.lblJam = Label(mainframe, textvariable=self.teksJam,
                            font=('Helvetica', 40))
        self.lblJam.place(relx=.05, rely=.45)



    def update(self):
        #strftime() berfungsi untuk merubah waktu secara lokal
        #menjadi bentuk string yang kita inginkan.
        datJam = time.strftime("%H:%M:%S", time.localtime())

        #mengubah teks jam sesuai dengan waktu saat ini
        self.teksJam.set(datJam)

        #perubahan teks jam dalam selang waktu 1 detik (1000 ms)
        self.timer = self.parent.after(1000, self.update)

if __name__ == '__main__':
    root = Tk()

    aplikasi = PersamaanKuadrat(root, "Tugas Akhir")
    aplikasi = JamDigital(root, "Tugas Akhir")
    root.mainloop()

如果我想更改右侧 4 个按钮的颜色 通过将第 1 个输入的值更改为第 6 个输入,我该怎么办。

例如:

如果我用 1 填充所有输入(第一个输入直到第 6 个输入),然后按 enter,'A1' 的背景颜色将变为黄色 如果我用 2 填充所有输入,然后按 enter 'A1' 的背景颜色将变为红色 如果我用其他数字填充所有输入,'A1 的背景颜色将变为绿色

我想不通,所以我需要帮助,谢谢

【问题讨论】:

  • 那么,您在更改颜色或使用“if”语句方面需要帮助吗?
  • 是的,我知道,你能帮帮我吗?

标签: python-2.7 button tkinter


【解决方案1】:

按钮也使用self。使用以下方法更改颜色:

if disk==6.0:
    self.btn1.configure(bg ="red")

在方法onCariAkar()中使用上面的

【讨论】:

  • 嗨@user3611502,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
  • 感谢 shaktimaan,它有效 :) 实际上这是我第一次学习 python 和 tkinter,我可以再问你一个问题吗?如果我只想使用第一个输入来更改 A1,第二个输入来更改 A2,我想我必须从 A 更改“浮动”对吗?但我不知道我应该用什么来改变它,再次感谢:)
  • 如果您想在第一次输入之后按“Enter”,那么只需将if 条件更改为 1.0,2.0...等等
【解决方案2】:

您需要将按钮设为实例变量(例如self.btn1),如果您想从该类的另一个方法访问它们,正如@shaktimaan 的回答中所建议的那样。

有条件地更改颜色的一种更简单的方法(而不是编写大量 if variable == number 语句)是通过将数字(6.0、12.0 等)作为键并将颜色作为值的字典来访问颜色:

self.color_map = {6.0: 'red', 12.0: 'yellow'} # change or add keys and values as needed

然后,在onCariAkar() 方法中,如果对应的数字是字典中的键之一,您可以使用try...except 块来更改颜色:

try:
    color = self.color_map[disk] # set color to the value of key in dict
    self.btn1.config(bg = color) # change btn1 color
except KeyError:                 # disk is not a key in self.color_map
    pass                         # do nothing on key error

【讨论】:

  • 是的,我认为这将是一种更好的(性能方面和其他方面)方法
猜你喜欢
  • 2013-07-31
  • 1970-01-01
  • 2020-08-03
  • 2014-07-11
  • 1970-01-01
相关资源
最近更新 更多