0

このデジタル時計を入れたい:

import sys    
from tkinter import *
import time

root = Tk()
time1 = ''
clock = Label(root, font=('times', 20, 'bold'), bg='green')
clock.pack(fill=BOTH, expand=1)

def tick():
    global time1
    # get the current local time from the PC
    time2 = time.strftime('%H:%M:%S')
    # if time string has changed, update it
    if time2 != time1:
        time1 = time2
        clock.config(text=time2)
        # calls itself every 200 milliseconds
        # to update the time display as needed
        # could use >200 ms, but display gets jerky
    clock.after(200, tick)

tick()
root.mainloop(  )

このステータス バーで:

status = Label(mGui, text="v1.0", bd=1, relief=SUNKEN, anchor=W)
status.pack(side=BOTTOM, fill=X)

それを行う方法はありますか?助けてくださった皆様、ありがとうございました:)

4

3 に答える 3

2

if ステートメントとは何ですか? clock.afterステートメントが関数tick()内で直接呼び出さclock.after()れ、時間文字列が更新されるため、これは不要です。

import sys    
from Tkinter import *
import time

def tick():
    # get the current local time from the PC
    time_string = time.strftime('%H:%M:%S')
    # if time string has changed, update it
    clock.config(text=time_string)
    clock.after(200, tick)

root = Tk()
clock = Label(root, font=('times', 20, 'bold'), bg='green')
clock.grid(row=0, column=1) 
tick()
root.mainloop()

Tkinterまた、 Python 2.7 では(大文字のtkinterT)、Python 3.0 では (小文字の t)を使用することを忘れないでください。

于 2014-09-24T10:00:37.357 に答える
0

ここでは Tkinter noob ですが、クロック ラベルをステータス ラベル内に配置することはできないと思います。ただし、それらを並べて配置できます。

import sys    
from tkinter import *
import time

def tick():
    global time1
    # get the current local time from the PC
    time2 = time.strftime('%H:%M:%S')
    # if time string has changed, update it
    if time2 != time1:
        time1 = time2
        clock.config(text=time2)
        # calls itself every 200 milliseconds
        # to update the time display as needed
        # could use >200 ms, but display gets jerky
    clock.after(200, tick)

root = Tk()
time1 = ''

status = Label(root, text="v1.0", bd=1, relief=SUNKEN, anchor=W)
status.grid(row=0, column=0)

clock = Label(root, font=('times', 20, 'bold'), bg='green')
clock.grid(row=0, column=1) 

tick()
root.mainloop()
于 2013-03-28T19:40:17.043 に答える
0

通常、フレームからステータスバーを作成し、表示したいものをそのフレームに詰め込みます。たとえば、時計を右側に詰めて、ステータス ラベルを左側に詰めることができます。次に、ステータスバー フレーム全体を GUI の下部に配置できます。

通常、私はオブジェクト指向スタイルを使用して例を示すことを好みますが、質問のコードから適用された例を次に示します。

import sys    
from tkinter import *
import time

root = Tk()

statusbar = Frame(root)
statusbar.pack(side="bottom", fill="x", expand=False)

time1 = ''
clock = Label(root, font=('times', 20, 'bold'), bg='green')

def tick():
    global time1
    # get the current local time from the PC
    time2 = time.strftime('%H:%M:%S')
    # if time string has changed, update it
    if time2 != time1:
        time1 = time2
        clock.config(text=time2)
        # calls itself every 200 milliseconds
        # to update the time display as needed
        # could use >200 ms, but display gets jerky
    clock.after(200, tick)

tick()

status = Label(root, text="v1.0", bd=1, relief=SUNKEN, anchor=W)
status.pack(in_=statusbar, side=LEFT, fill=BOTH, expand=True)
clock.pack(in_=statusbar, side=RIGHT, fill=Y, expand=False)

root.mainloop(  )
于 2013-03-28T20:15:44.397 に答える