-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathlattice_view.py
56 lines (47 loc) · 1.8 KB
/
lattice_view.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import sys
from lattice_model import LatticeModel
from PySide import QtCore, QtGui
from lattice_widget import LatticeWidget
class LatticeView(QtGui.QWidget):
def __init__(self, lattice_model, timer_delay = 0, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setSizePolicy(QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
self.lattice_model = lattice_model
self.lattice_widget = LatticeWidget(self.lattice_model)
self.time = 0
self.time_label = QtGui.QLabel("Time")
self.time_label.setAlignment(QtCore.Qt.AlignCenter)
self.time_label.setMargin(2)
layout = QtGui.QFormLayout()
layout.addWidget(self.time_label)
layout.addWidget(self.lattice_widget)
timer = QtCore.QTimer(self)
self.connect(timer, QtCore.SIGNAL("timeout()"), self.update_model)
timer.start(timer_delay)
self.setLayout(layout)
self.setWindowTitle(self.tr("Lattice gas"))
def update_model(self):
for x in xrange(10):
self.lattice_model.update()
self.lattice_widget.update()
self.time_label.setText(self.tr("Time " + str(self.time)))
self.time += 1
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
size = 200
model = LatticeModel(size, size*size, 0)
# model.cells[1*size/2:size, 0:size/2] = 0
# model.cells[0, :] = 0
# model.cells[size - 1, :] = 0
# model.cells[:, 0] = 0
# model.cells[:, size - 1] = 0
# model.cells[0:(2*size/5), :] = 0
# model.cells[(3*size/5):size, :] = 0
# model.cells[:, 0:(2*size/5)] = 0
# model.cells[:, (3*size/5):size] = 0
# model.cells[0, 1] = 0b0001
# model.cells[0, 9] = 0b0100
view = LatticeView(model, 10)
view.show()
sys.exit(app.exec_())