1

私は現在、華氏を摂氏に変換し、さまざまな方法で表示する GUI に取り組んでいます。Celcius が正 (+3) になると、ウィンドウは赤くなります。温度がマイナス (-58) の場合、ウィンドウは紫色になります。正しく変換されるボタンを使用してベース ウィンドウをコーディングすることはできましたが、ウィンドウのラベルを変更することはできません。

緑色のメイン ウィンドウから「変換された温度:」というウィンドウに移動し、結果を表示することになっています。

おそらく、これを行う方法で私を助けることができます。コードをそのまま掲載します。

#GUI for the fahrenheit calculator.

import tkinter

class MyConverterGUI:
    def __init__(self):
        self.main_window = tkinter.Tk()

        self.top_frame = tkinter.Frame()    
        #self.mid_frame = tkinter.Frame()
        self.bottom_frame = tkinter.Frame()

        self.main_window.title("Konverterare")
        self.main_window.geometry("350x350") 

        self.label1 = tkinter.Label(self.top_frame, text= 'Fahrenheit till Celcius-konverterare' '\n' 'Skriv in ett tal och tryck på Omvandla' , \
                                  width = 90, height = 20, bg = "green")

        self.label1.pack()

        self.prompt_label = tkinter.Label(self.bottom_frame, text= "Skriv in en temperatur(f) här ---->")
        self.fhentry = tkinter.Entry(self.bottom_frame, width = 10)

        self.prompt_label.pack(side="left")
        self.fhentry.pack(side="left")

        self.value = tkinter.StringVar()
        self.c_label = tkinter.Label(self.top_frame, textvariable = self.value)
        self.value.set("Graderna omvandlade: ")

        self.c_label.pack()

        self.calc_button = tkinter.Button(self.bottom_frame, text ="Omvandla", bg ="purple", command=self.convert, \
                                          height = 2, width = 17)
        self.calc_button.pack(side="right")

        self.top_frame.pack()
        #self.mid_frame.pack()
        self.bottom_frame.pack()

        tkinter.mainloop()

    def ersattEtikett(self):
        self.nyText=convert()
        self.bytText.set(nytext)

    def importera(self):
        self.fahrenheit = float(self.fhentry.get())

        return self.fahrenheit

    def convert(self):
        self.fahrenheit = self.importera()
        self.Celcius = float(self.fahrenheit - 32)*(5/9)
        self.Celcius = round(self.Celcius, 2)
        print ("Detta funkade fint", self.Celcius)

        return self.Celcius

my_converter = MyConverterGUI()
4

1 に答える 1

2

まず、変換の仕組みがまったくわかりません。

def ersattEtikett(self):
    self.nyText = self.convert()  #Shouldn't it be `self.convert()`???
    self.bytText.set(nytext)

さて、ラベルの背景を変更する設定に関しては、次のconfigメソッドを使用するだけです。

self.whatever_label_here.config(bg='red')

を使用.configすると、コンストラクターで設定できる属性を変更できます。例えば:

self.label1.config(text="This is the new label text",bg="green")

最後に、スタイルのメモとして:

self.calc_button = tkinter.Button(self.bottom_frame, text ="Omvandla", bg ="purple", command=self.convert, \
                                  height = 2, width = 17)

前の行では、バックスラッシュ ( \) はまったく不要です。Python は、どのタイプの括弧も閉じていない行を自動的に継続します --

mylist = [ 1,
           2,
           3 ]

は完全に有効です (すべてのリストをこのように書くべきだと言っているわけではありません!)。そのまま:

mydict = { 'foo': 'bar',
           'bar': 'baz',
           'baz': 'qux' }

そのまま:

mycallable(foo,
           bar,
           baz,
           qux="A cat in a hat") 

余談 -- についての簡単な宣伝文句self

クラスを「呼び出す」ことで、クラスのインスタンスを作成できます。

foo = MyClass()

これで、メソッドを呼び出すことができますfoo:

bar = foo.method()

メソッドにアクセスするには、知っておく必要があることに注意してくださいfoobar = method()機能しません(また、期待することもできません)。fooでは、内部の別のメソッドから内部のメソッドを呼び出したい場合、これはどのように機能するのfooでしょうか? そこでself出番です: 次のクラス定義を考えてみましょう:

class MyClass(object):
    def __init__(self):
        self.bar =  'baz'

    def method(self):
        print( "ID of self:", id(self) )
        return self.method2()

    def method2(self):
        self.bar = 'qux'
        return self.bar

foo = MyClass()
print ( "ID of foo:", id(foo) )
foo.method()

fooの ID が の IDと同じであることに注意してくださいself。つまり、foo最初の引数としてそのメソッドに渡されます (self慣例として名前を付けています)。それを見る別の方法:

foo.method()

基本的には次と同等です:

MyClass.method(foo)    
于 2013-01-02T14:10:48.623 に答える