2016-05-27 8 views
0

私は非常に基本的なPyQtを行っていますので、最適化が不十分で、クラスの向きが不足しているとお考えください。LCDディスプレイは入力を更新したくない(表示するように表示していない)

ImはPyQtでタイマーを作ろうとしています。私はこれらの機能をUIに3つのLCDのを、時間のLCD(hourLcd)、分LCD(minuteLcd)と第二LCD(secondLcd)

import sys 
import time 
from PyQt4 import QtGui 
from PyQt4 import uic 

app = QtGui.QApplication(sys.argv) 
#window = QtGui.QMainWindow() 

ui = uic.loadUi("clock.ui") 

#ui.setupUi(Window) 
ui.show() 

これは設定PyQt4

def hourUp(): 
    count = ui.hourLcd.value() 
    if count < 24: 
     count = count + 1 
    ui.hourLcd.display(count) 

def hourDown(): 
    count = ui.hourLcd.value() 
    if count > 0: 
     count = count - 1 
    ui.hourLcd.display(count) 

def minuteUp(): 
    count = ui.minuteLcd.value() 
    if count < 59: 
     count = count + 1 
    ui.minuteLcd.display(count) 

def minuteDown(): 
    count = ui.minuteLcd.value() 
    if count > 0: 
     count = count - 1 
    ui.minuteLcd.display(count) 

def secondUp(): 
    count = ui.secondLcd.value() 
    if count < 59: 
     count = count + 1 
    ui.secondLcd.display(count) 

def secondDown(): 
    count = ui.secondLcd.value() 
    if count > 0: 
     count = count - 1 
    ui.secondLcd.display(count) 

をしているしていますUIボタンをアクションに接続するためのものです。例えばUI上のボタンを押すと、カウンタに1を加えます。

def start(stop): 
    loop = False 
    secondcounter = ui.secondLcd.value() 
    minutecounter = ui.minuteLcd.value() 
    hourcounter = ui.hourLcd.value() 

    while loop == False: 
     time.sleep(1) 
     secondcounter = secondcounter - 1 
     print(secondcounter) 
     ui.secondLcd.display(secondcounter) **** 

     if secondcounter == 0: 
      if minutecounter != 0: 
       minutecounter = minutecounter - 1 
       print(minutecounter) 
       ui.minuteLcd.display(minutecounter) **** 
       secondcounter = secondcounter + 59 
       ui.secondLcd.display(secondcounter) **** 

     if secondcounter == 0: 
      if minutecounter == 0: 
       if hourcounter == 0: 
        loop = True 

     if minutecounter == 0: 
      if secondcounter == 0: 
       if hourcounter != 0: 
        hourcounter = hourcounter - 1 
        print(hourcounter) 
        ui.hourLcd.display(hourcounter) **** 
        minutecounter = minutecounter + 59 
        print(minutecounter) 
        ui.minuteLcd.display(minutecounter) **** 
        secondcounter = secondcounter + 59 
        print(secondcounter) 
        ui.secondLcd.display(secondcounter) **** 

     else: 
      continue 

タイマーを動作させるためのアルゴリズムです。

基本的に、コードはすべて完全に動作します。それは与えられた任意の時間から0までカウントダウンしますが、私はコードのプリントアウトをUI、特にそれらの隣の星のラインにリンクするのに問題があります。 他の機能で動作するように、カウンターが変更されたときにコードがLCD桁を更新することを拒否している理由(例:counter = counter - 1)がわからない。

ありがとうございます!

答えて

0

解決策が見つかりました。あなたのUI

を呼び出す前に

while loop == False: 
    app.processEvents() #This was the line of code that I needed 
    time.sleep(1) 
    secondcounter = secondcounter - 1 
    app.processEvents() #and this 
    print(secondcounter) 
    ui.secondLcd.display(secondcounter) 

基本的には、app.processEventsを()を追加

関連する問題