在多线程的情况下保存值

时间:2014-10-22 17:13:45

标签: python multithreading button user-interface python-multithreading

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys, os, time
import Queue
import threading
import subprocess

class LearnButton(QPushButton):
    def __init__(self, title, test):
        super(QPushButton, self).__init__()
        self._title = title
        self._test = test
        self.setText(title)
        self.clicked.connect(self.click_threads)
        self._q = Queue.Queue()
        self.flag = True

def click_threads(self):
    self.thread1 = threading.Thread(target=self.fun1)
    self.thread2 = threading.Thread(target=self.fun2)
    self.thread1.start()
    self.thread2.start()

def fun1(self):
    print "Val", self._test, self._title, type(self._test), type(self._title)
    if self._test != "None":
        self.date_time_string = time.strftime("%Y%m%d_%H%M%S")
        self.retainedv = self.date_time_string
        print self.date_time_string
        self.flag = False
    else:
        print self.retainedv

def fun2(self):
    print "Val", self._test, self._title, type(self._test), type(self._title)
    self.setEnabled(False)
    if self._test != "None":
        while self.thread1.isAlive():
            self.setText('h')
            time.sleep(0.5)
            self.setText('i')
            time.sleep(0.5)
            self.setText('i')
            time.sleep(0.5)
        self.setEnabled(True)
        self.setText(self._title)
    else:
        self.setEnabled(True)

class LearnApp(QDialog):
    def __init__(self):
        super(QDialog, self).__init__()
        self.setWindowTitle("LearnApp")

    self.active = False

    close_button = QPushButton("Close")
    close_button.clicked.connect(self.close)
    self.button1 = LearnButton("B1", "Im in B1")
    self.button2 = LearnButton("B2", "Im in B2")
    self.button3 = LearnButton("B3", "Im in B3")
    self.check_button = LearnButton("Check", "None")

    self.test_report = QTextEdit()
    self.test_report.setReadOnly(True)
    layout = QHBoxLayout()        
    sub_layout = QVBoxLayout()
    sub_layout.addWidget(self.button1)
    sub_layout.addWidget(self.button2)
    sub_layout.addWidget(self.button3)
    sub_layout.addWidget(self.check_button)
    sub_layout.addWidget(close_button)
    layout.addLayout(sub_layout)
    layout.addWidget(self.test_report)
    self.setLayout(layout)
    self.setFocus()


app = QApplication(sys.argv)
dialog = LearnApp()
dialog.show()
app.exec_()

这是我试图修改的代码。主题是按B1,B2或B3后,我想将date_time_string的值写入文本块。

当我们按下date_time_string'时,不应计算Check的值。 按B1,计算date_time_string的值,之后我要点击的是Check'并写下' date_time_string'的价值从上一次点击(即点击B1时)到文本框。

有没有办法为下次点击保留date_time_string的价值?

由于

0 个答案:

没有答案