2017-12-15 9 views
0

出力された時間を24時間と12時間の形式で入れ替えようとしています。時間はGUIでテキストとして出力されます。私はすでにインターフェイスとボタンを作成していますが、何らかの理由で関数呼び出しが正しく応答していません。GUIで24時間から12時間にスワップしようとしています

import time 
from tkinter import * 
import os 

class ConfigurationManagement(): 
    def __init__(self): 
     self.__clockMode = 12 
     self.__clockColor = '' 
     self.__swapButtonTextColor = '' 
     self.__swapButtonColor = '' 

    def readClockSetting(self): 
     cwd = os.getcwd() 
     print(cwd) 
     filename = "clockSetting.txt" 
     setting = open(filename, 'r') 
     allSetting = setting.readlines() 
     setting.close() 
     return allSetting 

    def setClockMode(self, clockMode): 
     self.__clockMode = clockMode 

    def setClockColor(self, clockColor): 
     self.__clockColor = clockColor 

    def setSwapButtonTextColor(self, swapButtonTextColor): 
     self.__swapButtonTextColor = swapButtonTextColor 

    def setSwapButtonColor(self, swapButtonColor): 
     self.__swapButtonColor = swapButtonColor 

    def getClockMode(self): 
     return self.__clockMode 


def settingUpClockSetting(): 
    global clock 
    clock = ConfigurationManagement() 
    allSetting = clock.readClockSetting() 

    clock.setClockMode(allSetting[3]) 
    clock.setClockColor(allSetting[6]) 
    clock.setSwapButtonTextColor(allSetting[9]) 

def timeIn24(pastTime=''): 
    currentTime = time.strftime('%H: %M: %S') 
    if currentTime != pastTime: 
     digitalClock.config(text=currentTime) 
    digitalClock.after(200, timeIn24) 


def timeIn12(pastTime=''): 
    currentTime = time.strftime('%I: %M: %S') 
    if currentTime != pastTime: 
     digitalClock.config(text=currentTime) 
    digitalClock.after(200, timeIn24) 

def clockSwap(): 
    print("Cat") 
    clockMode = clock.getClockMode() 
    if clockMode == 12: 
     clock.setClockMode(24) 
     timeIn24() 
    elif clockMode == 24: 
     clock.setClockMode(12) 
     timeIn12() 


settingUpClockSetting() 
root = Tk() 
topFrame = Frame(root) 
topFrame.pack() 
bottomFrame = Frame(root).pack(side=BOTTOM) 
digitalClock = Label(topFrame, font=('times', 100, 'bold'), bg='black', fg='green') 
digitalClock.pack() 
timeIn12() 
root.geometry('700x500') 
timeSwapButton = Button(bottomFrame, text="24/12 Modes", fg="red", bg="black", command=clockSwap).pack() 
root.mainloop() 

----------デジタル時計設定ファイル----------

ClockType[12,24]: 
12 

ClockColor[The following colors can be handled: ]: 
green 

SwapButtonTextColor[The following colors can be handled ]: 
red 

SwapButtonColor[The following colors can be handled: ]: 
black 

I:これは、これまでの私のコードです

私のボタンが実際に動作していることを確かめるために、猫プリントをclockswap関数に追加しました。それは確かです。

私は、これは固定しまっ
+0

デバッガの使用を検討しましたか?または、失敗した場合、clockswap()関数のifの両方のブランチの内側にプリントを追加しようとしましたか、clock.getClockMode()によって返された値を出力しましたか?これらの単純なデバッグオプションを試していないのであれば、StackOverflowで何を質問していますか? – barny

+0

応答してくれてありがとう、私は実際に自分自身の問題を修正し、投稿に新しい答えを追加しました:);ご協力いただきありがとうございます! –

+0

問題の少なくとも一部は、 "" clockSetting.txt ""設定ファイルの処理にあります。例えば、 'allSetting [3]'が整数 '12'ではなく' 12 \ n 'という文字列に設定されているとします。 – martineau

答えて

2

あなたが新しいのスケジューリングを保つように見えます古い時計の更新を停止することなく時計の更新を行うことができます。また、timeIn12は、afterへの呼び出しでtimeIn24を使用します。

更新を行うために2つの機能は必要ありません。 1つの関数で更新を行うだけで、フォーマットを変更するだけです。例:

def updateTime(self): 
    if self.getClockMode() == 12: 
     currentTime = time.strftime('%I: %M: %S') 
    else 
     currentTime = time.strftime('%H: %M: %S') 
    ... 
+0

私はすでにこの問題を解決しています(質問を閉じる方法はわかりません) - 私の最新のコメントを参照することができます。私が問題を解決するためにほとんど同じことをしたので、私はあなたの回答を答えとして記入するつもりはありません –

0

私は次の関数を追加しました:

def clockSwap(): 
    global counter 
    if counter == 24: 
     counter = 12 
    elif counter == 12: 
     counter += 12 
    return counter 

をし、同じカウンターに両方のクロックを追加しました:

def timeIn24Or12(pastTime=''): 

if counter == 12: 
    currentTime = time.strftime('%H: %M: %S') 
    if currentTime != pastTime: 
     digitalClock.config(text=currentTime) 
    digitalClock.after(200, timeIn24Or12) 
elif counter == 24: 
    currentTime = time.strftime('%I: %M: %S') 
    if currentTime != pastTime: 
     digitalClock.config(text=currentTime) 
    digitalClock.after(200, timeIn24Or12) 
関連する問題